When you convert "Hello" to UTF-16LE, you end up with this byte sequence (shown in hex):
48 00 65 00 6C 00 6C 00 6F 00 00 00
The printf call says to print the string as though it's a regular zero-terminated character string. It sees 48
and prints an H
, and then it sees 00
and it thinks it's done.
You need a print function that can interpret the string as UTF-16LE. There isn't a standard one in C.