En ningun micro deberias tener una rutina de interrupcion demasiado larga o que ocupe demasiado tiempo ( cero delays ). Es entrar, hacer y salir.
Si los 100ms no importa que sean exactos entonces lo envias al main con un flag. Pero si importan entonces no deberias hacerlo.
Tambien si tenes otra interrupcion vas a necesitar definir prioridades, que es mas importante para vos.
Casi que todo depende de que estas buscando hacer con esa interrupcion.
Por ejemplo si fuera leer el ADC, en la interrupcion del timer le das a iniciar la lectura del ADC ( a pesar que seguramente tenes algo que te lo activa por hardware ) y luego usas la interrupcion del ADC para cuando este listo.
Resumen: Tiempo destinado en las interrupciones es tiempo que no se permite correr a la funcion main. La implementacion todo depende de las prioridades que necesites tener, y siempre atendiendo a lo que dije en la primer frase. A no ser que lo que tengas en el main no importe para nada, entonces ahi podes poner delays como mas te guste.