openGL instance drawing

I learned how to use the same vertices to draw more than one object: we
make the matrices and send them to the vertex shader via a uniform and
draw, then change the matrices and send them to the vertex shader again
and draw again.
drawing triangle instances via buffer offsets

I learned to use a single call to glDrawElementsInstanced(...) to draw
multiple instances of a single triangle with a single offset provided
per instance.  To do this, I bound the float offsets to a buffer object,
specified how to pass them with glVertexAttribPointer(...), and then
restricted the passing of values to 1 (one) value per draw instance with
glVertexAttribDivisor(...).

Cool.
drawing cube instances with transform buffers

I learned to use the same cube and draw multiple instances of it by
providing transform matrices as arguments to the vertex shader.