Count Pulses from Water Meter and Open Valve Every 'N' pulses

I suppose the 'counter' in you example is an arbitrary variable or is there something special about the 'counter' string in the arduino IDE?

arbitrary unsigned long (4 bytes) most of the times...

I also have never heard that the cpu can buffer 1 interrupt before. Is there any documentation that explains more about this?

IIRC it is in the atmel 328 datasheet (500+ pages). WHen there is an interrupt a special register is set so the CPU knows it must handle it. Because interrupts are disabled it may not do so. When interrupts are enabled again, the CPU can handle the "temporary blocked" interrupt.

Edit: I suppose declaring the 'counter' variable as volatile only removes the need to turn the interrups of and on for the variable to be read if it is a single byte variable.

The keyword volatile takes care that the variable is read from and written to memory every time it is accessed. This prevents that a var is optimized in a register temporary. It is used for variables that can be changed from outside the main program. This can be interrupts, but also if you have memory mapped IO you must declare such var as volatile too.