The difference between a push and a pull system is how the units of work are assigned to the person who will be carrying out that unit of work. The concept of push and pull aren't unique to software development - the idea originates from logistics and supply chain management.
In a push system, a some kind of task is created and then assigned to a developer. A task could be anything from the implementation of a requirement (or a component needed to realize a requirement) to a bug fix to a document to write. Someone, usually some kind of manager or team leader, takes the units of work that need to be done and then allocate them to the members of the team to complete. Simply, work is pushed onto the people who will be doing it.
In a pull system, the tasks that must be done are stored in a queue, often a priority queue of sorts. An example might be Scrum's product and sprint backlogs, which contain user stories that are to be done. A developer who is currently not working on anything will go to the queue and take off the highest priority story that they are able to do and work on it. The people who are doing the work pull the work out of a list and do it.
The concept of push and pull aren't related to iterative/incremental versus sequential development. A team using iterative/incremental/agile techniques could use a push system, while a team using sequential development could use a pull system. However, typically, the agile methods (XP, Scrum) favor self-organizing teams and therefore pull systems.
For more information, you might be interested in this blog post on Push vs. Pull in Scrum. Kanban might also be of interest - Kanban is a methodology that comes from manufacturing, but can be applied to software development, which emphasizes just-in-time development and reducing overload on workers. Kanban is also related to and often used with Lean, another manufacturing concept which can be applied to software development.