In general, (visibility-) culling is the process of limiting the amount of things rendered (both geometry and drawcalls) to manageable levels, so the GPU doesn't go up in flames.
So, here are ~6 kinds of culling, in no particular order:
- Back Face Culling: Don't render what is facing away from the camera.
- Interior Culling: Don't render what is inside of objects.
- Distance Culling: Don't render what is too far away.
- Frustum Culling: Don't render what falls outside the cameras view.
- Portal Culling: Don't render what is in another room.
- Cluster Culling: Don't render what is too small to see.
- Occlusion Culling: Don't render what is hidden.
Optimizing culling is generally done by creating spatial hierarchies, whereby testing nodes on higher levels allows rejecting (or including) large swathes of the hierarchy, reducing the amount of work to be done.
Directly storing individual primitives/triangles in a spatial hierarchy is extremely inefficient, since the geometry must still be loaded/generated, sent to the GPU and be transformed.