From this page:
The first step is the same as a recalculation (or full calculation, depending how the calculation was invoked) that does not involve circular references. This enables all the cells that come before the circular reference to be properly calculated and the list of cells in the circular reference to be identified together with their dependents. During this first step Application.Iteration is False.
The second step occurs once on each iteration:
The list of cells in the circular reference is calculated sheet by sheet, in alphabetic sheet name sequence. Within each sheet the list of cells and array formulae in the circular reference, and all cells that are dependent on them, is calculated from left to right and top to bottom. (all the columns in the first row from left to right, then the next row ...). Each array formula in the list is calculated as a single block of cells from left to right and top to bottom, so if you want to use calculation by columns rather than by rows you have to use a multi-cell column array formula.
This calculation ignores the dependency tree and relies on the iterative calculation process to resolve dependencies.
Volatile cells that are not dependent on the cells in the circular list are NOT recalculated on each iteration.
This step is repeated until the iteration limits (maximum number of iterations and maximum cell change per iteration) are reached. During this second step Application.Iteration is True.