Exactamente, tenés que testear los flags de interrupción (xxxIF) para ver cual interrupción es la que se activó.
No quiero dejar de hacer la distinción entre prioridad y cantidad de rutinas de interrupción. La prioridad simplemente establece que interrupción se atiende primero, lo que no está relacionado con cuántas rutinas de interrupción disponibles hay.
La cantidad de rutinas de interrupción viene dada por el vector de interrupciones, que en este caso es de tamaño 2.
En pics de gama alta hay más niveles de prioridad y se escriben rutinas de interrupción por separado para cada módulo (SPI, IC, OC, CN, UART, CAN, Timers, etc).
Las recomendaciones para escribir rutinas de interrupción son a grandes rasgos: que no sean grandes porciones de código, usarlas para escribir algún dato o setear algún flag que sea chequeado por el programa principal, tener cuidado de guardar y recuperar los registros que uno usa (si usas el C18 el compilador se encarga), recuerda declarar como "volatile" los registros SFR que use la interrupción, y no hay mucho más que eso.
Cuando usar uno u otro tipo... bueno, en mi corta experiencia he usado algunos pines para detectar fallas de periféricos, a eso le puse alta prioridad.
Después hay que analizar cada cuanto tiempo se producen las interrupciones y cuanto se tarda en atenderlas, y que tan prioritario es atenderlas.
Por ahí si ponés tus fuentes de interrupción y sus características sería interesante debatir cuál debería tener alta prioridad y cual baja en este tema.
Saludos