Why does wc -l tell me that this non-empty file has 0 lines?

The issue you're experiencing is that wc -l counts new lines. Since you haven't in fact typed the \n there is in fact zero new lines.

excerpt from wc man page

Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, or when FILE is -, read standard input. A word is a non-zero-length sequence of characters delimited by white space.

If you switch it around so that wc counts characters (-c) you'll see that it is in fact working just fine and can count the number of characters:

$ xsel -o | wc -c
14

Saving it to a file has the effect of adding a newline at the end of the file.