system.flush vs system.println

hey i could even use a interrupt and free up some CPU cycles hence reduce power usage

Be cautious, interrupts are a frequent source of problems here in the forum. Keep them short and fast and don't do anything you don't know what timing it has (as calling some libraries you're not familiar with). For example: Never call any method of the Serial object.

Is there a document / code example that i can read to figure out how the buffering works in Arduino?

You get the complete code with your IDE. hardware/arduino/avr/core/arduino/HardwareSerial.cpp
It's a quite simple circular buffer.