lighting

I think that one of the more difficult topics in opengl is getting lighting to work properly, and the official specification isn’t always easy to understand.
For example, what is the difference between linear attenuation and constant attenuation?
What is the difference between infinite viewing distance and local?