Why is my Serial port not printing the right output?
In the first example you are adding an integer to the address of a string literal and then converting it to a String.

In the second example you are converting a string literal to a String and then appending an integer.

The key point here is string literal. The compiler just sees it as an address in flash memory. It's down to the functions you use with that address that define it as a string. So when you add an integer to it you are just adding an integer to the address, which of course changes the address. So then when you go to convert whatever is at that address to a String you end up with garbage.