There are three ways of referring to a particular release: name (e.g., woody), state (e.g., stable), and number (e.g., 2.2). The name and number refer to the same static release with a number only being issued when the release is finalised (i.e., it becomes stable). The state (stable, testing, or unstable) shifts from release to release, and a given release will cycle through these states. The special name sid always refers to unstable.
The release names come from the Toy Story movies (bo, hamm, slink, potato, woody, sid, ...).
The states are stable, unstable, testing, and frozen.
The unstable release is where new packages and updates to old packages appear. You access this distribution if you want the latest and greatest, and are comfortable with the occasional glitch.
For those who want the latest and greatest but not the risk the testing release lags behind the unstable release by a few weeks to include only packages that don't appear to have any problems.
When a new release is being prepared it evolves from the unstable release through the testing release onto the frozen release. A frozen release goes through a thorough testing phase to ensure all packages in the distribution work together and there are no outstanding bug reports. This process can take six months or more.
Once this testing is complete the release is then renamed as stable and may remain the current stable for up to eighteen months. The stable release is just that, stable. It is often regarded as the most stable distribution of GNU/Linux available. Packages in this release are not the most recently available and sometimes thought to be quite out of date, but that is the cost of rock solid stability.
In summary, the stable release is best suited to production servers, while the adventurous power user can run 'unstable' on a desktop with only the rare mess up.
An advantage of this system is that a user can track either a specific release (slink, potato, woody, sid) or a state (stable, testing, unstable) simply by specifying the appropriate name in /etc/apt/sources.list.
The fact that the states can change quite dramatically (e.g., when a new stable release is made) is a little problematical as people may suddenly find that their system wants to upgrade everything to a new release. One suggestion is to choose the release name and stay with that until you decide yourself to upgrade.
Thus, to stay with a given release use the release name. To keep up-to-date with a stable system then use the stable release. To be at the bleeding edge and relatively stable then use testing. To live at the absolute bleeding edge use unstable.