¿Para que sirven las interrupciones?

Buenas noches, me he encontrado con este post de Nick Gammon en Gammon Forum : Electronics : Microprocessors : Interrupts, en el que habla sobre como habilitar y deshabilitar las interrupciones de ciertas partes de nuestro arduino. Lamentablemente mi ingles es pésimo y no acabo de tener muy claro lo que nos comenta Nick, por lo que yo he entendido, ¿podría por ejemplo, interrumpir la comunicación I2C mientras tomo datos desde los pines A4 y A5 y una vez tomadas las lecturas volver a activar la comunicación I2C?
Bueno, es mi primer post y espero no plantear algo ya comentado(in spanish please:), si es así, agradezco que me redireccionen.
Saludos Aduinautas.

No. No es asi.
Una interrupción hardware como lo que plantea Nick Gammon tiene que ver con interrumpir todo el programa, hacer algo rapido y volver a la mismo lugar donde se interrumpio.
Ese pin que genera la interrupción x hardware cumplirá una función determinada o disparará un evento.

Es un articulo muy extenso cubriendo todo lo que se puede decir de las interrupciones.
Y como siempre con muchos ejemplos como para que no queden dudas de como usarlas.

Las interrupciones son "pequeñas tareas" que en lugar de ejecutarse dentro de la secuencia de nuestro programa, son llamadas por "una alarma" que colocamos en el hardware (cambio de estado de un pin, desbordamiento de un timer, etc...). De alguna manera parecen procesos independientes, y es una muy buena herramienta para "hacer varias cosas a la vez".
Un ejemplo: el puerto serial dispone de un hardware específico capaz de recibir por su cuenta un carácter que llegue por serial, pero si no lo leemos inmediatamente, el siguiente carácter que llegue machacaría al recibido. ¿Que hace? pues lanza una petición de interrupción al procesador. El procesador deja lo que estaba haciendo, anotando previamente dónde estaba trabajando y los datos que tenía en las manos, y "salta" a la dirección donde está el programita que hemos asignado a esa interrupción, que lo único que hace es copiar ese carácter a un buffer de memoria (que es realmente del que lee la función Serial.read). Acto seguido vuelve a cargar la dirección y los datos de los registros que había guardado, y continúa con lo que estaba haciendo. De esa forma, en lugar de tener que vigilar cada poco tiempo si hay un carácter en el puerto serie, podemos leer "de vez en cuando" lo que la interrupción ha ido amontonando.