By Robert Hoopes and Andrew Bryant

Constructive Solid Geometry is the process of building solid objects from other solids. There are three CSG operators available: Union, Intersection, and Difference. Each operator acts upon two objects and produces a single object result. By combining multiple levels of CSG operators, complex objects can be produced from simple primitives.

Two Cylinders Linked.
In this example, we will start with two cylinders. The long cylinder is linked to the shorter one, making it the child object. The parent/child relationship is important because, as we shall see, determines how the CSG effects the final shape. The CSG operator is assigned to the child object using the Link Options dialog (command + L). Remeber, the CSG operator can be changed at any time, so you're not stuck with your original settings. As always, you should feel free to experiment - it's the best way to learn.
Union.
The union of two objects results in an object that encloses the combined space occupied by the two given objects.
Intersection.
Intersection results in an object that encloses the space where the two given objects overlap.
Difference.
Difference is an order dependent operator; it results in the parent object minus the space where the child object intersected the parent object.
Caveat.
One important point to remember is that CSG, by definition, only works properly on solid objects. In the example to the left and below (rendered), you can see the problems that can occur when CSG is applied to open primitives.