Iterative software development is not a single ‘thing’, but an idea or theory, that involves the approach to how software is developed.
Many websites and articles talk about the difference between iterative software development and incre­mental software development, but the two are not neces­sarily mutually exclusive.
Of course, it is important to note that iterative software development can be viewed from one of two ways; either from the developer’s perspective or from the developer’s team leader’s perspective. Each provides a substantial and legit­imate view, yet different and unique.

But it is rare these days that just one or the other process is used. Most software devel­opers, including those who consider themselves to be purists of iterative software development, are mostly probably using a combi­nation of both. To be specific, iterative software development is focused on steps or phases of software development. One way to describe it is not finishing one feature or component in one go. In other words, you code, get feedback, code, get feedback, etc.

Another, much broader way of describing the process, is that an iteration is a short period that could take one to two weeks or even three to six weeks, where the software development team takes a new idea, be it a customer request or story and imple­ments it as, i.e., builds it as running tested software.
During this period, many things take place: design, testing, analysis, coding, feedback, etc. This is different from incre­mental development but only slightly, and in actuality it depends on how the software engineers or development team see it for themselves. In other words, the two terms of iterative and incre­mental software development are not mutually exclusive.

The benefit of using iterative software development, or at least the iterative approach to software development, is that stages of development can overlap. This means that while you are doing end-to-end testing, you can begin to prepare new requirements.
This means essen­tially that once a version is complete, it can then be tested and put through a review process, which results can be then trans­formed or rather, rebuilt into a new version (iteration) of the component.

So then what are the real-life benefits of iterative software development?

For one, if done correctly, it allows for measuring progress and keeping planning simple and reliable.

How does this work?

By not sched­uling programming tasks in advance, the team or person is forced to plan out what will be done in each iteration (period). Additionally, this will assist in staying abreast of ever-changing user requirements.
Secondly, by sticking to the iteration plans stead­fastly, it will be seen immedi­ately, if any task may not be finished on schedule. At that point, it will be easy to re-estimate or redefine and either remove or modify some of the tasks.
What is crucially important is to concen­trate the effort on completion of the essential tasks – those defined by your customers – as opposed to those possibly incom­plete tasks which were chosen by the developers.
This, in a nutshell, is a very brief insight into the aims and purposes of iterative software development.