What is the purpose / differnce?

Am I understanding this correctly ?
OpenGL keeps data in “buffer”. For example - data to be rendered are kept in “color buffer”.
glClear( GL_STENCIL_BUFFER_BIT) set the data in stencil buffer to whatever “clear” value is.

Now what does glClearStencil(0); do ?

This sequence makes no sense.
Is glClearStencil and glClear redundant ?
Why clearing something which is not yet enabled ?

glEnable( GL_STENCIL_TEST );

After stencil test is enabled I write the object to be stenciled ( fragmented) into “color buffer”.
I can “disable” “color buffer” not to show.

How can I enable / see / show JUST the stencil (buffer)?
It would be nice to verify the stencil before it is applied.

It sets the “clear value” you just talked about. Specifically, it sets the value that the stencil buffer will be cleared to when you next perform a stencil buffer clearing operation.

Because you’re enabling stencil testing, which is a property of the rendering operation. The stencil buffer just stores stencil information. Yes, that information is used for stencil testing, but you don’t need to turn on stencil testing to have data in a stencil buffer.

Broadly speaking, you don’t.

I mean sure, you can read stencil data from the stencil buffer via glReadPixels (well, I forget if OpenGL 1.1 is able to do it, but modern OpenGL can). And you can upload that data to a texture. And thereby be able to visualize the stencil buffer in some way.

But otherwise, the data in the stencil buffer is not something you can just visualize. The easiest way to understand what’s there is to render a full-screen quad to the screen which uses a specific stencil test to check for the exact set of bits you’re interested in. Exactly what that looks like is difficult to say without knowing what you’re trying to visualize.