Iterative Development is an approach to building anything (software included) in which the overall resulting product or outcome is composed of several iterations in sequence.
Each iteration is a self-contained mini-project composed of activities such as discovery, requirements analysis, design, build (development/programming), test and review.
With Incremental Development, partial systems grow incrementally with new features, iteration by iteration; product increment by product increment.
The product owner steers the project, iteration by iteration; the choice of stories for next iteration comes from the product owner whatever he/she perceives as the ones of highest value or most valuable. The product owner adaptively plans the choice of stories for the next iteration (Sprint Planning), shortly before it starts, based on the latest insight (i. e. from Sprint Review), rather than speculatively at the start of the project. The product owner has ongoing control and choice, as fresh information arises.