Stencil test not working

Could somebody kindly walk me thru this ?
I understand the concept of stencil and depth , however, the sample I am using as an example is using both - stencil and depth and it is not working.
I have made “stencil” - wide circle and not sure if I did it correctly.
Then I made same size circle - shifted to the right and expect to see only parts of the “stencil” area, Not so - I get it all.
The example I picked is not well documented, and I particularly do not get the
highlighted parts and why depth buffer is used.
I have commented out parts to gain understanding of the code . So IT WON"T render anything right now!

PS Looks as highlighting (**) is not going well.

void OpenGL_stencil(void) {

	/* main */
	glutInitDisplayMode(
			GLUT_RGBA | GLUT_ALPHA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);

	/* onDisplay */
	**glClear(GL_DEPTH_BUFFER_BIT);** why - I want only stencil 
	glEnable(GL_STENCIL_TEST);
	**glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);**
	glDepthMask(GL_FALSE);
	glStencilFunc(GL_NEVER, 1, 0xFF);
	glStencilOp(GL_REPLACE, GL_KEEP, GL_KEEP);  // **draw 1s on test fail (always)**

	// draw stencil pattern
	glStencilMask(0xFF);
	glClear(GL_STENCIL_BUFFER_BIT);  // needs mask=0xFF
	// draw_circle();
	// draw single circle
	GLfloat x, y, angle;
	//glClear( GL_COLOR_BUFFER_BIT);  cleared in previous function 
	glColor3f(1.0, 0.0, 0.0);
	// window size in pixels / points
	GLint m_viewport[4];

	glGetIntegerv( GL_VIEWPORT, m_viewport);
	printf(" m_viewport %i %i  %i %i \n", m_viewport[0], m_viewport[1],
			m_viewport[2], m_viewport[3]);
	//sleep(10);
	// radius relative to window size
	float radius = .9 * m_viewport[2];
	float size = 25.0;
	glPointSize(size);
	glBegin( GL_POINTS);
	for (angle = 0.0f; angle <= (2.0f * GL_PI); angle += 0.01f) {
		x = radius * sin(angle);
		y = radius * cos(angle);
		//	glVertex3f(x, y, 0.0f);
		//printf(" x %f  y %f \n", x, y);
		// sleep(1);
		glVertex2f(x / m_viewport[2], y / m_viewport[3]); //  0.0f);
	}
	glEnd();

	//**glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);** why "TRUE??
	// **glDepthMask(GL_TRUE);**
	/**/glStencilMask(0x00);**               why reseting the stencil mask here ?? 
	// draw where stencil's value **is 0**
	//glStencilFunc(GL_EQUAL, 0, 0xFF);
	/* (nothing to draw) */
	// draw only where stencil's value is 1
	glStencilFunc(GL_EQUAL, 1, 0xFF);    

	// draw_circle();
	// draw single circle moved to right
	//GLfloat x, y, angle;
	//glClear( GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 0.0, 0.0);
	// window size in pixels / points
	// GLint m_viewport[4];

	glGetIntegerv( GL_VIEWPORT, m_viewport);
	printf(" m_viewport %i %i  %i %i \n", m_viewport[0], m_viewport[1],
			m_viewport[2], m_viewport[3]);
	//sleep(10);
	// radius relative to window size
	radius = .9 * m_viewport[2];
	size = 5.0;
	glPointSize(size);
	glBegin( GL_POINTS);
	for (angle = 0.0f; angle <= (2.0f * GL_PI); angle += 0.01f) {
		x = 100 + radius * sin(angle);
		y = radius * cos(angle);
		//	glVertex3f(x, y, 0.0f);
		//printf(" x %f  y %f \n", x, y);
		// sleep(1);
		glVertex2f(x / m_viewport[2], y / m_viewport[3]); //  0.0f);
	}
	glEnd();

	glDisable(GL_STENCIL_TEST);

This has been resolved / SOLVED
As "casually " mentioned in sample .
glutInitDisplayMode MUST be implemented BEFORE the main window is created.
If implemented as I did , AFTER the main window, funny things happen.
That is why I am still looking for “stencil pipe” description.
Mrs Google is not helping.

/* main */
	glutInitDisplayMode(
			GLUT_RGBA | GLUT_ALPHA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);