A heat sink is a traditional cooling solution that maximizes the surface area (using fins or pins) and airflow (using fans) to dissipate heat from the processor out into the surrounding air. Heat sinks with built in cooling fans are a simple, lightweight, and completely self-contained cooling solution. Depending on the available airflow they can often out-perform a similar sized heat-spreader.
Heat spreaders have a large, flat surface on top. They have no fan and no fins. Instead of cooling by forced air, the spreader is pressed directly up against another large flat surface (for example: the frame of a vehicle or the inside wall of a sealed container) and heat is allowed to pass from the small heat spreader out to the larger metal surface. Heat spreaders do not cool the CPU by themselves, they only transfer the heat to another object where it can safely dissipate away from the processor. Heat spreaders are ideal for systems that expect to operate under extreme shock and vibration, or systems that need to be completely sealed inside a container to protect it from the environment.
Fig 1) Identical CPU boards using a heatsink (left) and heat spreader (right).