Para programar................. pss eso depende de que programador tengas. Si es alguno de microchip pss desde MPLab puedes programar el chip, sino muchos usan el PonyProg2000 que soporta varios programadores, o si tienes el PicKit2 pss éste también tiene su software para programar.
Ahora, que si lo que quieres saber es que herramientas existen para crear los firmware para los PIC (los ficheros *.hex) pss existen varios lenguajes, como el asm, C (compiladores C como C18, CSS, SDCC), JALv2, PICBASIC, GCBASIC, etc, etc... Y sobre entornos de desarrollo tienes MPLab, PikLab, PICBASIC PRO, etc, etc.
Saludos!