To clarify there are several programs involved when using the fan-made solutions.
First part is LDRAW which is a library of 3D models of LEGO bricks. Nearly all programs uses this library. (LDD is the only that doesn't as far as I know.)
MLCAD is a program that allows you to create and edit 3D models of your LEGO creations, using the LDRAW parts library. You also use it to specify each step in the instructions and the viewing angle of each step. There are other programs to do the same, for example SR 3D Builder and those can be used interchangeable as they store the models using the LDRAW standard.
LPub is a program specifically made to make it easier to create better looking building instructions. It takes a model file made in MLCAD or similar, uses the instructions steps specified there and controls several other programs, such as exporters and renders, to make the process less painful.
MLCAD was the primary editor a few years ago, but it seems like a few alternatives have come lately. Sadly I have not really been up-to-date on this matter, so I can't give give any recommendations. All I can say is that MLCAD isn't developed anymore (source is not available either) and it is not too great for Technics. (Studs and axles often doesn't properly align for example, and getting an exact angle on a gear or similar can be nearly impossible.)
EDIT:
Some of my building instructions:
An older BI of mine of a medium sized Mindstorm robot:
http://www.brickshelf.com/cgi-bin/gallery.cgi?i=3225909
Made in MLCAD + LPub using Pow-ray as render, images where combined manually in Gimp. This was 4 years ago and LPub has changed significantly since then.
A small Technic model made much more recently:
http://www.brickshelf.com/gallery/Spill ... ission.pdf
MLCAD + LPub used here, but everything for the instructions where done directly in a new version of LPub. Can't say that I'm happy with the result, but it was much easier and faster to make.