Curves is a powerful and very flexible tool, which allows to control brightness, contrast and color balance very preciesly.
The way I approach the curves tool, either in Gimp or in any other editor is two-fold:
(1) The curve defines how to change the intensity. Its left side is for the darkest parts of the image, its right side is for the brightest part of the image. Where the curve is above the diagonal, the intensity is increased. Where the curve is below the diagonal, the intensity is decreased.
(2) The curve is the tool to redistribute contrast. Ranges with steeper curve will receive more contrast, and ranges with flatter curve will look more dull.
General tips
Learn to read image histograms.
Keep the curve monotonically increasing. If you make part of the curve flat, you will loose all tone details in that range, and if you make some part of the curve with negative (inverse) slope, that tonal range will be effectively inverted. Usually you don't want that.
Move the beginning and the end of the curve inside of the range to stretch contrast (similar to changing black and white levels in the Levels tool).
Pull the curve up to lighten the image (similar to increased gamma), and down to darken the image (similar to decreased gamma).
Make the beginning (left end) of the curve slightly flatter to compress shadows (and make noise less visible). Pull the curve in the beginning (left end) up, if the image is underexposed.
Prefer slight changes if possible.
Gimp-specific tips
When the curves tool is open, click on the image to see the position of this point on the histogram (a vertical line on the histogram will appear). This helps a lot to find which part of the curve to modify.
Don't stretch contrast too much. Current Gimp (version 2.6) represents images with 8 bit per color channel. Curves tool may lead to posterization (how to notice: the histogram will change from smooth hills into many spikes). Future versions of Gimp should support also 16-bit per channel. Now you better do only slight modifications, or use the curves tool of the RAW processing software (UFRaw, RawStudio, RawTherapee...), or use an editor with 16-bit color depth support (e.g. digiKam's built-in editor).
Increase window size of the curves tool. The larger the curves tool windows is, the easier it is to adjust them precisely.
Enable and disable preview to quickly view the image with the current curve applied and without.
Examples
For example, let's consider a curve like this

This curve will make the shadows darker and the highlights brighter; mid-tones will receive more contrast.
On opposite, the next curve will make the highlights darker and the shadows brighter. Also, it will “pull” more details out of shadows and highlights (they will receive more contrast, at the cost of lost contrast in mid-tones):
