Posting an objective answer to this is probably impossible. Most likely your GL driver might have some forward-compatibility, meaning that even though it's on version 2.1 it supports a few select things from later versions to speed up rendering. Most likely stuff that doesn't really add functionality, but that simplifies existing implementations, so for example (the following are not real functions) if previously you had to use
glSetVertexArrayIndex(int index, float data) like so
but in new GL versions (let's pretend 3.0) they added a function
glSetVertexArrayIndexes(int indexes, float data) that you could now use like so:
glSetVertexArrayIndexes([0, 1], [data_index0, data_index1]);
That means your GL driver might secretly implement support for the new
glSetVertexArrayIndexes(int, float) behind the scenes, since if it recognizes multiple calls of the old
glSetVertexArrayIndex in a row it can just translate it to a single call of
glSetVertexArrayIndexes and save some processing time.
But like I said, this is just a pure guess.