Loading software onto the bits and pieces.

That makes sense. I presume then that once you've uploaded the specific piece of code it stays on the card forever until it's either replaced or a master reset takes place (if such a thing exists)?

Am I right in thinking that not all shields require code? The reason I mention this is that not all the shields look like they have a usb port and in the IDE, the Tools -> Board menu doesn't list the screen shield for example, suggesting, you basically wire to it, send it a message, and it does the rest without you needing to write code for it.