BSP Trees

What exactly are BSP trees. Somewhere I saw them used for collision detection, somewhere else for removing polygons that are far away from the camera. I think Q3 and Half-Life use it. If anyone has a link or an explanation, thanks in advance!

Here is a link, it seems quite comprehensive for a beginning though I only threw an eye on it

This post a few months ago was useful: