Iterator versus the foreach Instruction

The two main techniques for retrieving a number of objects from a collection are as follows.

There is a lot of confusion about these, and the impact the different constructs have.