Here is a basic overview of the difference between Foreach and Foreach-Object:
Foreach-Object works at the pipeline and processes each object one at a time. The variable you use to access the object in the pipeline is $_ or $PSItem (If you use PowerShell V3+) You also have the ability to add Begin and End scriptblocks to run commands before and after you process each object in the pipeline.
Foreach loads all objects of a collection into memory at once and then processes them.
Note: I didn't call out that Foreach-Object itself has an alias called foreach that can be used while in the pipeline. But alas, I did not remember that until after the video was published.