Attachinterrupt0 and attachinterrupt1 doesn't work

The serial.available itself isn't the issue, that returns a TRUE/FALSE, is there data in the serial buffer to be read, or isn't there.

There is a stack for interrupts that happen while processing a interrupt so that it can be done immediately after the current one is done but it can only hold so many before they are lost in the event of a long enough delay.

However it may be unavoidable while using both serial and pin interrupts in the same program, if the stack gets filled with serial interrupts while dealing with your pin interrupt, it will try to resolve them after a delay, at which point the data was already missed.

But I suspect the issue might actually be in you changing boards. I had a similar issue when I tried using 6 interrupt pins for a R/C receiver on a Leonardo. 4 worked perfect but two of them just couldn't detect the interrupts on pin 2 and pin 7, they are hardware interrupt pins but they won't work as interrupt pins unless you configure them as such.

Turns out the library wasn't/couldn't configuring those pins to be interrupts, which is why they didn't detect any interrupts. You''ll have to figure out if this is the case for you as well and how to manually configure them.