So I’m rotating triangles, but there seems to be jumps in lighting. Is it because some kind of Z fighting? ( I tried with single triangles and with duplicated triangles, but opposite normals.) Do I have to rotate the lights in the opposite direction relative to the camera? Do I have to rotate lights at all?
On topic of CPU usage being high. Using glutTimer typically does not drag down the CPU unless I have a very complicated scene or I use a software render mode like MESA. In either case CPU load has nothing to do with glutTimer but rather with the actual time to render the scene being nearly equal to the timer delay setting (50ms in your case)
You may want to see a previous post GLUT FPS regulation where two simple codes comparing glutTimer and glutIdle are given. When I run the glutIdle version my CPU goes to 100% but the glutTimer function stays near 5% (Linux+Nvidia 9600GT card) becuase the scene is trivially simple/fast to render.