I'm thinking of writing a page on the topic.
There are three places that data, generally speaking, can live: externally to the processor (eg, an SD card), in a register, or in memory.
In the arduino programming environment, memory is used in four main ways: static, heap, stack, and progmem.
etc etc, more words to follow.