Help check my (basic) understanding

You got it pretty much right.

Arduino pins can supply 40 mA with a total of 200 mA for the entire atmega328 chip. However, with a 100 Ohm resistor and a single led connected to a pin, the 40 mA maximum is not an issue.

However... 3x3x3 = 27 leds, drawing each 20 mA makes 20x27 = 540 mA which is more than your arduino can supply. I suggest using a led driver, transistor, mosfet, whatever makes you happy.

I build an 8x8x8 ledcube which was fed of 595 shift registers. No, not what they are intended for, yes, pushing the limits on how much current they can supply, and mostly: yes, a very convenient hack.

So first find it how you want to supply power for your 27 leds. Each pin of a 595 register typically supplies 30-35 mA. This will do for you. To drain a plane of 9 leds, use a transistor. If you want more advice it might help to post your proposed schematic for your ledcube.

Cheers !

Jack