Arduino and libserial - strange behaviour

So my question is if the serial output already contains a newline/carriage return is endl; still necessary?

No. The purpose of endl is to supply the carriage return/line feed (in the proper order and quantity for the operating system it is running on).