I don't know much about rendering in newer versions (I only mod 1.6.4) but I do know that in 1.8 they moved all the OpenGL calls into "GLStateManager" - you should never be directly calling GL11, as you do for e.g. "GL11.glPushMatrix();", which should instead be "GLStateManager.pushMatrix();"; otherwise, you could end up with GL state inconsistencies (e.g. stack overflow will cause pushMatrix() to fail so the state isn't restored when popMatrix() is called, which in the worst case can completely break all rendering that occurs afterwards. I once managed to break rendering so badly that all textures stopped rendering, even after exiting the world, without any OpenGL errors, which themselves are marginally useful unless you place a lot of "GL11.glGetError()" calls and print out the line number, and even then only actual errors are caught, not unintended state changes). This also presumably makes it easier to update to later versions, which no longer used fixed-function OpenGL (GL11), hence "GLStateManager" (i.e. Mojang could simply update the code in GLStateManager to use newer OpenGL methods).
Also, the best way to see how something is done is to look at vanilla code which does the same thing; e.g. see how item frames render the item in them (they are entities but TESRs are essentially the same).