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
http://www.tasteofhoney.freeserve.co.uk/vsd/bsp/bsppart1.html

This post a few months ago was useful:
http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/000593.html