What happens to the Arduino if you don't use a resistor with an LED?
From page 411 of the ATmega328P data sheet, we have a graph of the output current vs voltage.
We can see over the the 20mA range of output currents, we drop ~0.5V, giving an approximate internal resistance of 25Ω.
A typical LED has a forward voltage of about 2V. Therefore, we end up in the situation where we will drop 3V over the 25Ω internal resistance of the ATmega328P, giving an output current of 120mA.
I = (5-2)V / 25Ω = 120mA
This is a simplification, but this 120mA is far larger than the recommended maximum current per pin of 40mA of the microcontroller, and far in excess of what a normal LED should take.
That said, most LEDs and the ATmega328P seem to survive this kind of abuse, especially for short periods. In general, if the pin continues to work after this is done, it should be fine.
Leaving series resistors out will definitely greatly (exponentially) shorten lifetime of both the controller and the LED. Absolute maximum ratings for most AVRs are (a.o.):
- max. 40mA per GPIO pin
- max. 200mA per package.
A new Arduino sets you back $20 or more, a fist full 220 ohm resistors sets you back 1$. When treated within spec, an Arduino (and LEDs for that matter) can survive a lifetime.