Ultimately, it depends on the compiler. The compiler can choose any type of data that he likes * even if he must simulate his behavior using software routines. Of course, as a rule, in order to increase efficiency, he will try to replicate his own types of basic equipment.
As for your second question, yes, of course, if you transfer the original representation from one architecture to another, it may not be interpreted correctly (concretization is another problem). This is why type functions are used ntohs().
* Well, literally nothing he likes. The C standard sets some restrictions, such as intto be at least equal short.