Mesh, Curve, Lattice and Surface objects can each store multiple shapes (also known as Vertex Keys or RVKs), which can be animated using Ipo curves. In the past, the interface to this feature was difficult to grasp, but access to these shapes for Mesh objects has received an overhaul and has become significantly better integrated into the UI.
By creating multiple instances of an Object (using ALT+D), each instance can be "pinned" to only show a specific Shape Key. This allows to have a full overview of all available shapes at once in the 3d window.
You can control this with the new Shape Panel in Edit buttons.

Add Shape Key
Insert a new shape (hotkey in 3D window: Ikey)
Relative
Each Shape has its own animation curve, working relative with respect to the Base Shape.
Pin (icon)
Make the Shape fixed for this Object instance
Arrows (icons)
Move to previous or next Shape, or browse it using a menu.
Name
Give the Shape a name
X (icon)
Delete the Shape
Slider
For "Relative" Shapes, which are not pinned, you can also insert the animation curve points for it.
Min, Max
The range of the slider
On top of a Shape Key, you can also define a Vertex Weight Group to work with. It will blend the current Shape with the reference (basis) Shape, based on the weight as painted (or set) in the Vertex Group. This feature works very well to create asymetric Shape keys for facial expressions, or to split a single Shape Key into several distinct components.
You can find a very cool demonstration of the feature linked from the image here: the Monkey Brush!