on the internet I found this about backface culling:
We need to do the following steps:

Transform the camera position into object space

For every face in object:
2.1) Make a vector from the camera to a point on the face (a vertex)
2.2) Perform dot produce on this vector with the face normal
2.3) If dot product result is greater than 0, face is visable.
If dot product result is 0, face is side on.
If dot product result is less than 0, face is hidden.
But… how do you send only once face and not the other? I mean when we send 3 verticies by glBegin(GL_TRIANGLES), we give it the option of drawing it with both faces… how do I implement this? and should I implement this or leave it to glEnable(GL_CULL_FACE); ??