I am relatively new to all this low level stuff,assembly language.. and want to learn more detail. Why there is a difference between Linux, Windows Assembly languages?
There's no difference in the assembly languages (although there may be differences between assemblers, and hence the notations used), provided we're sticking to x86. Both Linux and Microsoft Windows do run on other architectures, more so in the case of Linux.
However, an operating system nowadays doesn't just load a program into memory and let it go. It provides a large amount of services. Since it also protects programs from each other, it imposes restrictions. To do anything other than basic computation, it is usually necessary to go through the operating system. (This was less true of older operating systems, like MS-DOS and CP/M, which could load programs that would run independently, but nowadays pretty much every non-embedded system has a modern OS.)
Nor are programs stored as plain binary blobs. It's normally necessary to link with other libraries, often as the program is loaded for execution (that's how DLLs work, for example), and it is necessary to link with the OS. There may be other information the OS requires, and therefore there has to be some sort of information about the binary blob in the executable file. This varies between OSes.
Therefore, executable files have to be in a format to be loaded into memory, and this varies from OS to OS. To do anything useful, they have to make OS calls, which are different between systems. That's why you can't take a Windows executable and associated libraries and run it on Linux.