Hola.
Un programador lo que hace es meter el archivo .hex, generado de la compilación de un programa en ASM, C, Basic, etc. en el microcontrolador; el debugger lo que hace, además de lo anterior, es dar la opción de ir por el código paso a paso para que nosotros podamos verificar como va corriendo el programa.
El ICD2 es un programador-debugger, es decir se lo puede usar de las dos maneras.
Si vas a usar el 18F4550, debes verificar que en la lista de dispositivos soportados de tu programador este ese pic. Luego, realizar un programa, compilarlo; esta compilación generará un archivo .hex, el cual es el que vas a importar desde tu software de programación y ya con eso, y con el hard del programador, pues, programar el PIC.
Saludos