What's the difference between entering return, option (⌥) + return and ctrl + return in TextEdit?
Viewing two example files in TextEdit there is indeed no difference:

On the left side Rich Text and on the right side Simple Text
Keyboard Layout: de-de



Viewing the same files with TextWrangler ("showing invisibles" enabled) the differences are revealed:



Viewing only the text file with TextWrangler ("hiding invisibles" enabled):



the same file in HexFiend: 



Return and OptionReturn insert 0x0A (New Line) and ControlReturn inserts 0xE2 0x80 0xA8 (Code Point Value: 2028, Unicode Name: Line Separator)

The difference is visible here:



Inserting a lot of qs the whole second sequence of abcdefghijklmnop in the third line breaks to a "new line", while the same sequence in the second line continuously flows to a "new line".