Microcontrollers are very small computers with various hardware features and then some programing or code that runs to interact with the various hardware features. Because of the limited nature of a microcontroller there is no operating system, there is just one program running that has a few distinct parts. Two main sections of code are the setup functions that are executed upon startup, and then the `main` run loop, which is a section of code that is executed over and over similar to a single song stuck on repeat.
Interrupts are just like what they sound: they interrupt the flow of the main loop when a given event occurs. Interruption types vary based on the microcontroller, they can be externally triggered by a button or another circuit, or they can be triggered internally from counters for example. When something triggers the interrupt, the microcontroller pauses the execution of the main loop and saves where it is at, a block of code related to the interrupt can then execute, when done the main loop continues where it left off.
An analogy of this might be if you were listening to a song on your phone on repeat when a call came in. The song pauses and you take the call, when the call ends your phone resumes playing the song where you left off.
For those with programing experience this might be conceptually used like multi threading if you really squinted your eyes and tried hard. The idea that you can have more than one task and at the appropriate time dedicate resources to the priority. In reality it is more like a delegate, block, closure, or callback; in which you would be notified of a specific event and have the opportunity to respond. It should be noted that in an interrupt handler you should do only very quick operations as the main loop is held up while this code executes. Longer operations should be done elsewhere and could cause problems if done from an interrupt handler.
Common uses of external interrupts might be a button press, a sensor, or another device that is communicating with the microcontroller. In each of these cases the external event can signal to the microcontroller that there is an event that needs responding to and then this allows the microcontroller to very quickly respond to that event. This is also critical in power saving modes, often devices could be battery powered and preforming a poll of a sensor is much more costly in electrical power as well as processing power than to only receive notifications via an interrupt when there is a chance in the sensor state.
Perhaps a better way to look at interrupts is in a push vs pull method. Whenever possible it is desirable to receive a push with a state update instead of the constant need to check the state manually.