Es muy simple:
Imagina que B4..B7 llevan pulsadores a masa (y con pullups internos a vcc, que se activan mediante un registro). Entonces, B4..B7 es 1111. Si pulsas un pulsador, por ejemplo B7, este ira a nivel cero, por lo que ahora sera 0111.
La interrupcion salta. Entras a la interrupcion, bajas el flag, y lees el puerto B para que el hardware de la interrupcion se inicialice otra vez. Haces lo que sea y sales de la interrupcion.
Si sueltas el pulsador, B4..B7 pasara de 0111 a 1111, por lo que hay otro cambio de estado. Interrupcion otra vez.
Resumiendo:
- La interrupcion salta cuando hay una transicion de 0 a 1 o de 1 a 0 en cualquiera de los pines B4..B7.
- Hasta que no leas el puerto, las transiciones posteriores no produciran interrupcion.
- La diferencia con INT0..2 es, que estos ultimos tienen un flanco definido (mediante el bit de registro correspondiente) que producirá interrupcion, mientras que RB4..7 produce interrupcion en un cambio de valor de esos 4 bits.
No se si la duda que tienes con el timer0 es similar, pero te adelanto que el timer0 interrumpe cuando pasa de 255 a 0. Y si te refieres al timer0 usado con pulsos externos, te dire, que este se incrementa con cada PULSO, es decir, supongo que con cada flanco ascendente (o descendente, una de dos).