Should be no different than anything else you have worked on. If the question is linux vs windows on the same machine/platform then obviously it is the same instruction set.
As you know, assembly language is specific to the tool, the assembler, not the target, and for x86 there are countless different incompatible assembly languages for the same instruction set (not just some at&t vs intel thing, many incompatible at&t assembly languages for the same processor). So there is that, you can, for example, go the gnu and/or llvm route and as far as the assembly langauge the experience can/will be the same.
But then you get into operating system and there is no reason to assume the same processor with different operating systems have the same system calls, they might use the same instruction to do a system call but always assume the calls vary between operating systems and from time to time within the same operating system family.
So how the C library connects to the system is expected to vary, but that is why there are these layers of libraries yes?
The high level (C, C++) calling convention ideally will be the same if you stick to say gnu tools of the same version, etc between the operating systems on the same platform. But that can vary, the gnu tools have options, and someone compiled the compiler itself and it has options.
If you are not going to work at the assembly language level or if it is minimal (as it should be) then most of this is irrelevant, the instruction set is just like french or spanish or english, and the operating system is a biology book or romance novel, etc. From a programmers perspective (not counting performance tuning) you program in some high level language and the lower level target is the lower level target. Just like paper, ink and the alphabet in a book, that is just the vehicle that moves the information.
While assuming that gcc, clang, etc are the same C and asm programming languages within the tool, that does not mean, as pointed out in comments, that the compilers on each platform will produce the same exact code from the same high level code (one should never expect this). The native versions of the tools even if from the same original code base, will be different for each target, mostly in the system calls and the linker scripts, but there may be other options that the builder of the tool has chosen and no reason to assume the builder of the linux tool for some distro is the same as the builder of the same tool for some pre-built windows binary...
If you have experience with microprocessors and assembly language and all of that, you know all of this so this question is quite confusing