The developers of desktop applications usually pay little attention to the hardware architecture. First, they often use high-level programming languages that hide these complexities at the cost of performance. Second, in most cases, their code runs on the x86 architecture, and they often take its features for granted. For example, they may assume that the size of int is 32 bits, but that is not true in many cases.
Embedded developers deal with a much wider variety of architectures. Even if they do not write code in an assembly language that's native to the target platform, they should be aware that all C and C++ fundamental types are architecture-dependent; the standard only guarantees that int is at least 16-bit. They should also know the traits of particular architectures, such as endianness...