Button logic

ok i need to step back and verify i know what this part of the code is actually doing.
This is my first time using interupts. That whole part of the code just came from the demo sketch with the device. Then I frankensteined the rest on.

rpm() just takes the variable NbTopsFan and increments it by one.

NbTopsFan is a Volatile variable so it gets saved to ram since it can be changed outside the part of the code its in.

attachInterrupt(0, rpm, RISING); I think this means that when it detects an rising interrupt on Pin 2 to run rpm() which then increments NbTopsFan.

so what i think is happening is
the interrupt is enabled
it waits for 1 second
when the interrupt is enabled rpm() is called and NbTopsFan starts being incremented. Im fuzzy on what it is actually counting based on the RISING.
the interrupt is disabled
calculation to get flow
display flow on lcd

a problem i see with this method is that I think all timing including millis and delay dont work properly when interrupts are disabled. this doesnt really matter if all the program is doing is looping and displaying the flow. But it does affect me since I do have other stuff happening in the sketch and once i disable the interrupts that stuff starts acting funny, in laymans terms.

So I suppose the question I should be asking is whats the best way to count the RISING without disabling interrupts as part of the process.
Or how do I reenable interrupts without calling rpm().
Or maybe I should be trying to do it without ever disabling the interrupts.

Am I heading down the right rabbit hole now?