Quite simple, CR returns the print head to the start of the line, and LF feeds the paper up one line. If you do CR on it's own the paper doesn't feed through, and you can over-print on the same line.
It's really all based on paper printers (probably teletypes), but terminal programs are designed to emulate those - generally they are configurable to accept just CR and internally add a LF as well. If you have the terminal program configured in that way, sending the normal CR/LF will produce double-spacing.
Back in the DOS days I wrote various terminal and communication prgrammes, including my own Packet Radio program I used to use.