Stacks in rendering is something like:
Each matrix in stack holds a series of transformations (position, rotation, scale). When you render something, it undergoes the transformation of all recorded transformation in the stack. When you pop a matrix (let's call it matrix A), it removes all the transformations after the pushing of matrix A.
For example (pseudocode):
pushMatrix();
translate(3, 0, 2); // move 3 units on x axis, and 2 units on z axis
renderModelA();
pushMatrix();
rotate(180, 1, 0, 0); // rotate 180 around the x axis
renderModelB();
popMatrix();
scale(2, 2, 2); // scale 2 on all axis
renderModelC();
popMatrix();
Model A would be rendered with translation of 3, 0, 2.
Model B would be rendered rotated 180 around x axis and translated 3, 0, 2.
Model C would be rendered 2x the size and translated 3, 0, 2. Since the matrix involving the rotation is already popped at the time Model C is rendered, the rotation does not apply to Model C.