What is the difference between the NXT 1.0 controller and the NXT 2.0 controller? I've tried to look this up but I can't find anything. As far as I can tell, the controller bricks (the white ones w/ buttons and a screen) are exactly the same and the only difference is NXT 2.0 comes with different sensors, parts, and software.

Is this correct?

If so, are NXT 2.0-generation sensors compatible with NXT 1.0? Can the NXT 1.0 be upgraded to run NXT 2.0-compiled software? 

http://thenxtstep.blogspot.com/2009/07/nxt-20-vs-original-nxt-which-one-to-buy.html
There are a few subtle differences in internal hardware between the NXT 1.0 and 2.0 bricks. The most notable one is that the 1.0's screen would give out over time due to stress being put on a capacitor when the buttons are pressed, but the NXT 2.0 is engineered such that this does not occur. But, none of these differences affect what hardware the bricks are compatible with.

Externally, the NXT 1.0 and 2.0 intelligent bricks are physically identical. You can update firmware of NXT 1.0 controller with 2.0 firmware (download the most recent version here). Once this is done, your NXT will be able to use the LEGO color sensor that comes with NXT 2.0 box, and to run NXT 2.0-compiled software.