Hi printf() prints to stdout which is defined to an UART in Board Support Package (or system library for old nios system) linked to the Qsys component (or SOPC for old nios system)
In eclipse, you can follow the printf() function but it becomes hard to understand.
NB : With JTAG_UART, you must keep a nios2-console connected to receive the bytes sent by your board, else you will face to hang problems.
Someones prefer to write to stdout with low level functions.
EDIT: JTAG UART is already duplex : you can send and receive characters.
You only need to use USB-RS232 if you don't have RS232 on your PC.