I suppose in older times typographers had to redraw the entire character set, but I’d guess there’s some good heuristics to make a character bolder/lighter in software and then make some manual adjustments.
Is there currently any kind of software that assists with this task?
There are effects/scripts in Fontlab / Fontographer / Glyphs that can make a bolder/lighter version of a font but these effects create very clumsy results almost unsuitable for real use.
When creating typeface with multiple weights one has to separately draw at least two full character sets (the lightest and the heaviest). The rest can be obtained by blending (interpolating) these two with some manual adjustments.
Also, the heaviest weight used for blending is often not the heaviest weight available in the typeface. The Heavy (or Fat or Black or ExtraBold, whatever the name) is often drawn separately as well since the contrast in this weight is usually much more pronounced and cannot be obtained with blending.