"abc" is not echoed to the screen. Instead, the pipe echoes "abc" to the second command, which is "echo xyz".
But the piped data from the first command does nothing in the second command. Which it is why it doesn't appear after the second command.
If you used xargs:
Code:
echo abc | xargs echo xyz
You would get the following echoed to the screen:
Code:
xyz abc
Because "abc" would be piped to xargs and would then be used as a parameter to the second echo command.