I'm planning on rendering multiple instances of a single model by modifying various uniform variables (such as location, rotation, et al.).
Is there a better way then modifying the uniform variables for every instance I want to render?
For instanced rendering you can use the ARB_instanced_arrays extension. With this extension you can define your not-so-uniform variables in a standard vertex array, and with the glVertexAttribDivisor function you can fine tune when the not-so-uniform variable change.
gl_InstanceID.