Modern OpenGL & Shaders

So, I think I understand how modern GL code is supposed to be written and I want to make sure I’m right.
I am supposed to manage my own matrix/matrices instead of using glXXX (glPush/PopMatrix, glTranslate, glScale, etc.).
Then, I am supposed to use a shader that takes that matrix (and whatever else is needed) to do the rendering.

Am I right so far?

So if I have to manage matrices myself, can I just write my own implementation of glPushMatrix, glPopMatrix, glTranslate, etc. myself? Is this a good idea?