Iterative development is a method of building software products in which the end result is not completely well-defined, and there’s only a vague idea of what has to be built. At each iteration, the version of the product built is evaluated for what is working and what’s not based on user feedback. Inconsistencies among requirements, designs, and implementations are detected early.
A good analogy to understand this model is looking at how a painter works on a new painting. When starting out, they are not very clear on what the end result should look like. Starting from a wireframe, the picture becomes clear bit by bit.