It starts by rendering objects to the screen
Then adding basic diffuse lighting (the arrow is the light source)
I also included the ability to show the difference between the Fragment and Vertex Shader. The Vertex Shader runs for each point on the geometry that makes up the object on the screen. The fragment shader is run for every pixel between those points and are displayed on the screen. Lighting in the fragment shader is more intense, but looks much better.
The last lighting aspect I added was specularity. The shiny effect surfaces get when they reflect some of the light into your eye.
The next examples show the difference between frag and vertex shaders