As for the "why can't we program directly from USB" the easy answer is there are more than just PGD and PGC. The programmer also plays with MCLR, Vcc and GND. If you look at the ICSP part of the...