Hey Mārtiņš, thanks for the good advice.
After considering it, I do think I agree that I can probably get away with using default or "identity" kind of values for a lot of the operations. Even for lighting I think I could just limit each object to passing the N (say, 3) most influential lights into the shader and using 0-intensity lights if I don't have 3 to pass in.
I don't have very grandiose ideas for what I want to accomplish with this project, it is mostly just a sandbox for me to concretely implement a lot of the game-engine concepts that I have been studying, so this should suit my needs.
I suggest to look at deferred rendenring techniques
I am familiar with the theory of deferred rendering, but haven't ever implemented it. It might be something I get around to doing once my engine is in a more robust state.