Machine Language is a low-level language with little to no abstraction from the actual machine/hardware bytecode. Machine Language is not a developer-friendly language and is usually quite difficult, if not impossible, to program in. Computers understand machine language natively as they consist almost entirely of numbers.
Programmers, therefore, use either a high-level programming language or an Assembly Language to abstract some of the unnecessary details such as the representation of an integer (i.e. the number 10) as a decimal number rather than a sequence of bits and bytes as per a binary number (i.e. 10102==>1010).
Every CPU has its own unique Machine Language. Programs must be rewritten or recompiled, therefore, to run on different types of computers.