There are some issues, like for example if I only have 2 lights I still have to fill up space for 8, and the maximum amount is set at 8 so its not very flexible and dynamic. I want to be able to support any given amount of lights and I want my code to be independent of the amount of lights in the scene.

I've read something about multipass forward rendering.. but I don't know really what it means, and I cannot find any good sources. From what I've gathered so far, it involves rendering each mesh a number of times equal to the number of lights that affects it and then somehow add the results? So for example if I have one mesh affected by 3 lights, I would render it three times and blend the results?

Do I understand it correctly? Also I do not know how to implement it in practice, is there any complete examples lying around? For example, how do you setup the actual blending between rendering passes, what opengl functions are used, etc? Is there anything else I should know?

Also, I have read about deferred rendering, but from what I've gathered it sounds abit complex and I'd rather try to atleast First get a multipass forward renderer working, since that seems easier and cooperates better with all the other tutorials on the internet (for example I still havnt learned texturing)

I've read something about multipass forward rendering.. but I don't know really what it means, and I cannot find any good sources. From what I've gathered so far, it involves rendering each mesh a number of times equal to the number of lights that affects it and then somehow add the results? So for example if I have one mesh affected by 3 lights, I would render it three times and blend the results?

Yes, light is additive and you can calculate one or more lights in a single pass and add it (blend one/one) to the buffer. Basicly you have two shaders, a base light shader (containing emissive/ambient light) and an additive light shader. The base shader should already handle more than one light (8 sounds good), and for each (8-) block of additional lights render the scene in an additional pass using additve blending.

As you can already see, this will scale really badly with scene complexity/number of lights, therefor you should either optimize it (not each light affects each face) or switch over to deferred rendering/lighting which scales really great only with number of lights.

For alpha objects, which should be drawn after opaque objects as mentioned, the first render should be src = GL_SRC_ALPHA, dst = GL_ONE_MINUS_SRC_ALPHA, but the following passes should be src = GL_SRC_ALPHA, dst = GL_ONE.