Hi,
A1) as I wrote MB flags change meaning when RXFIFO is used.

So if there is new message in RXFIFO MB5 flag is set, if corresponding IMASK1 bit is set, interrupt is generated.
2) RFFN specifies how many filter elements will be used in RXFIFO. This will determine which MBs will be used by RXFIFO engine and ID Filter table, which MBs remains to be used for general TX or RX operation. Also specified how many filter elements will use individual masking registers, rest will FIFO global mask register.
3) the CPU can read the message from RXFIFO by accessing the output of the FIFO (MB0) as a Message Buffer and the CAN_RXFIR register and then clear the interrupt (MB5 flag). If there are more messages in the FIFO the act of clearing the interrupt (MB5 flag) updates the output of the FIFO with the next message and update the CAN_RXFIR with the attributes of that message, reissuing the interrupt to the CPU. Otherwise, the flag remains negated.
BR, Petr