What exactly does automatic bed leveling do?
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.