Lo de ICD2 es el debugger. Sirve para ejecutar el programa y poder paralo y controlarlo desde el MPLAB. Me explico, tu vas a probar un programa, programas el micro, le das alimentación y ves que siempre te falla en el mismo punto. Bueno, pues conectas el ICD al circuito y al ordenador, arrancas el MPLAB y cuando el micro llegue al fallo, paras el programa desde el MPLAB y te aparece la ventana con el código y la flecha marca la dirección de memoria en la que está el Stack Pointer con lo que sabes cuál es la línea o líneas en las que puede estar el error.
Es una herramienta muy util.
Si buscas en el foro, puedes hacerte algún clónico.
Sobre los que has puesto, no te puedo decir si son buenos o malos. Sólo te puedo decir que prefiero el USB ICD2 "el de unos 50€"
PD.: el funcionamiento tiene que ser algo así, no te lo puedo decir exactamente ya que no tengo ICD