As with a lot of engineering, it depends.
To a first approximation, an LED looks like a forward biased diode (with a specified Vf) in series with a resistance. The microcontroller looks like a voltage source (Vcc, Vdd) in series with a resistance.
You can estimate each of these resistances by plotting the V/I curve, from the data sheet, or you may have to measure it. In my experience, the typical 20 mA output from a PIC or AVR is around 10 ohms, give or take. I've seen LEDs from 10 ohms to 100 ohms.
Subtracting the Vf of the LED from the Vdd of the micro, you have the voltage that needs to be dropped across the resistance. In the rare case where the sum of the internal resistances is appropriate, you don't need a separate resistor. In the more common case, a series resistor could save your micro, or your LED. Don't forget to look at the peak rated current if you plan to PWM.
For some applications, a designer or hobbyist will say reliability doesn't matter, at least till something fails.