Few questions related to programming microcontrollers I'm learning "Arduino" (I don't have previous knowledge of microcontrollers). I have few questions:


What is the difference between programming a microcontroller in C and programming in "Arduino?"
Is it a good idea for beginners to start programming microcontrollers in Arduino and then start learning to program in C?
I have Arduino Uno with an Atmega328P-PU microcontroller. What are some other microcontrollers which can be used with this board? What are differences between various microcontrollers which can be used with this board?
If a microcontroller is already programmed, can we download the program from it to a PC and edit it in Arduino IDE? Or it is like a .exe on a PC, once compiled we can't get source, all we can do is reverse engineer? 


That's it :)
The Arduino IDE uses C++ primarily, which it preprocesses in order to make compilable. But you can still for the most part use C in the Arduino IDE and it will just work as normal; there's nothing requiring you to use C++ or the Arduino libraries (or even the Arduino IDE) for most tasks.
Not touching this one. And in the end it doesn't matter terribly since they're very close.
Any of the ATmegaXX8 or ATmega8 chips will fit the socket. Note that they will require separate cores if you're using the IDE. And you can use any chip without the board in the IDE as long as you can find a core for it.
Not if you use a traditional compiled language to program it. If you use a VM then you conceivably could, but you'd have the source on your system regardless.