avr/interrupt.h is actually pretty simple as far as interrupt headers go. Looking through it, I don't see anything you wouldn't need to keep in order to make interrupts work. There's very little extraneous fluff. It'd be helpful to take the time to get to where interrupt.h is understandable before you try to write your own replacement for it. I'd say that if you look at the define macros that you need (i.e. don't look at
ISR_ALIAS unless you need to alias ISRs). Of those portions you are looking at, I'd say 90-100% of it is essential to handling interrupts. The only thing that might be optional is that you can avoid using variadic macros and
__VA_ARGS__ if you are willing to rewrite that code every time rather than using a macro.
Interrupts are very compiler dependent and very processor dependent. You can look in your manual for the processor to find exactly what parts of memory to write to to enable interrupts, and then you can make your driver do that. However, you will have to use all of the flags which interrupt.h puts on your functions to make sure they are compatible with being called as an interrupt (or write your own interrupt handler in assembly).