You can program a PIC with an ICD2, either in-circuit or not.
If programming out of circuit, the ICD2 has to get power from its 9V adaptor and it will power the PIC at 5V. You don't need any other components.
If you are programming the PIC in-circuit with an ICD2, you can power from the ICD2 or from the circuit.
If powering from the ICD2, the circuit must not take more than about 20 mA and must be able to tolerate 5 V
When programming in-circuit, the ICD2 must be able to send signals on the MCLR, PGC and PGD lines, so there must be nothing else driving those lines, or resistors so that the ICD2 can force the lines with the few mA drive that it has. The MCLR line can go to 13 V when programming so the circuit must be able to stand that and not hold the MCLR to lower voltages.
The PICKIT2 is much cheaper than the ICD2, does not need the 9V external supply and can supply the PIC at a range of voltages, not just 5 V. It's only downside seems to be that it has no serial port, just USB.