1. Yes display lists cannot be changed (they can only be translated and rotated). I would say that knowing the difference between the static data and the dynamic data is a good idea as VBOs and vertex arrays are slower than display lists (beit only slightly :roll: )
2.
http://nehe.gamedev.net - has lots of nice tutorials written in C++ but easily portable
3. I agree with aldacron that it would be better to scrap what you have and create a renderer that renders objects with the same material together.
4. Yes, you have to write it yourself, but it should be pretty easy. :lol: