Here I'll discuss the setup of a pair of Drupal websites, one a development ('dev') site and one a production ('prod'), and a system allowing the migration of state between them (promotion). This discussion, and the procedures described assume the presence of my Drupal Script Library.
In many cases, especially those of high-visibility, high-importance sites, it is desirable to see how changes will affect a site before releasing the change to the public. A new module, new content, or even updates need to be tested in a development environment before being effected on the production site.
Having a development environment on which changes can be staged allows assurance that a change doesn't have any negative effects as well as giving stake-holders an opportunity to sign off on the change before it goes live.