Externally powering LEDs so Arduino doesn't fry

20 LEDs isnt too many for the arduino to control, even at 20mA each, but it depends on how you plan on wiring things up. You can also take advantage of serial data transfer, to control many many LEDs, which includes 20. There are many methods of serializing and controlling the LEDs one way may be better than another way, depending on many factors.

If you multiplex 20 LEDs in a 4 x 5 matrix, you end up needing a total of 9 control lines, but you could multiplex in many ways. You could further reduce the control lines by charlieplexing the LEDs.

If dimming or brightness are important, you may want to consider taking advantage of PWM.

There are a lot of factors, based on only knowing that you want to control 20 LEDs, I'd say multiplex or charlieplex are the easiest options.

If using an external power supply is important, then using a constant current driver is maybe the best option.