Simple. \n when you just want a newline.
endl when you need to flush at the moment.
Useful in case you are printing a debug output right before some function that might do bed stuff to buffers.
Edit: I wrote println instead of endl somehow. Guess I need more downtime