The main question is "which micocontroller?" as there are many different types, of which almost all have the program memory already included on the chip die. This should answer your question number one.
As for number two, you should know that you cannot make a non-volatile memory just from flip flops and latches. You can make non-volatile truly read-only memory from a bunch of ORs and ANDs, but it will be hard wired and non-reprogramable.
As for number three, you need to know all of the above, plus a lot more I suppose.