I am afraid of missing out on interrupts that might fire when my code is servicing another interrupt.
Majenko stated that "The interrupt system then cycles through the interrupts looking for any interrupt flags that have been set, and if the interrupt is enabled it then jumps to the ISR.". This is not entirely true because:
The interrupts have priority in accordance with their interrupt vector position. The lower the interrupt vector address, the higher the priority.
This means that an interrupt source can "starve". After an ISR is completed, the controller will prefer high priority interrupts. Depending on interrupt frequency, it may happen that there is always a high level interrupt flag set, essentially blocking a lower prio one permanently.
Keeping ISR's short and knowing their execution time is good advice.
5 interrupts really isn't much, but still requires careful though on a simple fixed priority driven system.
AVR XMEGA for example takes it to another level. I have a XMEGA project that has to handle 22 different interrupt sources (4xUART tx/rx = 8 + 4 timers + 8 ADC complete + 2 other). However, the XMEGA features a "programmable multilevel interrupt controller". This allows you to manually assign one of three interrupt levels to each interrupt (within those, interrupt vector number priority still counts).
Further, you can activate a round-robin priority scheme, which addresses the before mentioned "starvation" problem.
To avoid the possible starvation problem for low-level interrupts with static priority, where some interrupts might never be served, the PMIC offers round-robin scheduling
So regarding your original question:
So is there some more structuralized method of managing interrupts in a large project?
It depends on the capabilities of your system. For a controller like the ATMega328 with simple static priority driven interrupt management there make sure that no interrupt starves and hold on to "short" and "know your execution time".
For a controller like the XMEGA, there is more planning involved because you just have more control. You have to carefully distribute the priorities and have to consider using features like "round robin".