What exactly does automatic bed leveling do? I get the concept of automatic bed leveling...the printer moves around the bed and uses a sensor to identify high and low spots, then "software compensates for differences". 

But what exactly does "compensates" mean? 

It is extruding more material in the low spots to build them up and thinning out the high spots? Is it adding or removing layers? Is it shifting layers as it goes up to compensate tilt? Or...? 

In what ways will this affect the final outcome? Would it be valid to say that if you wanted an automatically leveled bed and dimensional accuracy you should always print to a raft?
Last first:  use of a raft has nothing to do with bed levelling. It depends only on the features/shape/etc of the object being printed.

Now, as to what the auto-levelling does: the answer is, sadly "it depends."  A simple algorithm will just find the Z-height of the four corners and apply a bilinear correction to Z as a function of {x,y} coordinates.  A really good algorithm would map the entire build plate to some designated precision (perhaps 5 mm) and create a 2-dimensional lookup table to adjust Z over a curved build plate.     What your printer's levelling software does is more likely the former. 

Why? because if you try to correct over curves &amp; bumps, then you will end up distorting your entire printed object (basically forcing every layer to follow those distorted axes).  Far better to have some flattened or "fat" spots in the first layer printed, and then print proper planar layers after that.  

Example: I know my bed (AnetA8 aluminum) is slightly bowed, peak in the center; so after levelling the overall bed I try to set the Z-zero so the outer extremes of my object have good adhesion, even if the center region of the first couple layers ends up non-extruding because the nozzle touches the bed.