The M666 command is not strictly needed. You can run the printer just fine without it. If you run without it you will need to manually set the locations of your end stops so the bed comes out level.
If tweaking things in hardware isn't your style, the M666 command lets you tweak the end stops in software instead.
Either way, you need to go through a calibration procedure to figure out the leveling issues with your bed. Either way a dial indicator is a nice thing to have to do this. In the mechanical case you twist screws as a result of your cal. In the software case you wind up with a zero error for your three motors. It's in X,Y,Z terms since Marlin doesn't really have another way of naming each motor. If you are using the M666 stuff, you put that into Slic3r (or a button in Pronterface) and load it at the start of each print.
If tweaking things in hardware isn't your style, the M666 command lets you tweak the end stops in software instead.
Either way, you need to go through a calibration procedure to figure out the leveling issues with your bed. Either way a dial indicator is a nice thing to have to do this. In the mechanical case you twist screws as a result of your cal. In the software case you wind up with a zero error for your three motors. It's in X,Y,Z terms since Marlin doesn't really have another way of naming each motor. If you are using the M666 stuff, you put that into Slic3r (or a button in Pronterface) and load it at the start of each print.