Auto-level maximizes the dynamic range of the picture. It stretches the histogram of each colour to utilize the entire available range. In the case of 8-bit RGB, it will expand the histograms of each colour to span from 0 to 255, and pic the appropriate centre point.
The effect is generally an increase in contrast, and in some cases more accurate and vibrant colours.
It will not work on all pictures. In pictures where a particular colour dominates, using auto-level will shift the colour too much, making the picture unreal.
The level controls can be seen as a "limited edition" of the curves control. Adjusting levels is the same as adjusting curves but using only straight lines to map the inout values to the output values.
Disclaimer: I am not quoting the qbove from any books or reference text or websites. Just my own understanding.
Auto levels is a quick and dirty way to adjust the histogram and colour balance, as Roy said. Sometimes it works, sometimes it doesn't.
What I do is simply Shft-Ctrl-L, and if I like it, I keep it and maybe tweak a little bit more. If it's totally off and looks unreal, I simply Ctrl-Z and adjust manually.
I find it VERY useful for adjusting colour balance when I convert negatives to digital by using a macro lens and taking a picture of the negative against a fluorescent light box. In fact, I batch process these, doing a simple inversion followed by auto-levels. Sure beats adjusting the colours manually. You can always tweak a little bit more later.