Strange behaviour for glCullFace in legacy openGL

I have the following code in the display function:

    glEnable(GL_CULL_FACE);
    glColor3f(0.0, 1.0, 0.0);
    glCullFace(GL_BACK);
	glMultiDrawElements(GL_TRIANGLE_STRIP, countIndices, GL_UNSIGNED_INT, (const void **)offsets, LAT_SLICES);
    glColor3f(1.0, 0.0, 0.0);
    glCullFace(GL_FRONT);
	glMultiDrawElements(GL_TRIANGLE_STRIP, countIndices, GL_UNSIGNED_INT, (const void **)offsets, LAT_SLICES);

It draws the misphere fine with the outside red and the inside green. I tried to witch the colors in 3 different ways:
1) interchange the glColor3f calls and it worked fine.
2) interchange the glCullFace calls but it gave me all green for both sides.
3) insert a glFrontFace(CW) but also gave me a single color for both sides.

Can someone explains the strange behavior observed in 2) and 3)

Actually I got both the inside and outside of the hemisphere red not green for 2) and 3)

Upon further investigation it seems that 2 and 3 give the same result as 1) but upon rotating the hemisphere this becomes apparent. I have chosen an Xangle of 170 while keeping both Y and Z angles at 0. In one I could see both the inside and the outside but in 2) and 3) I only see the outside initially then after rotting further around X-axis I could see the green inside. Still Cannot understand this behaviour.

Well it seems that 2) and 3) negate the sign of the Xangle and do not exchange the colors. is that consistent with the intended behavior. The hemisphere pole is at (0, 1, 0).