All existing Windows desktop software is built (compiled) for x86 (name comes from the 286, 386, etc. but applies up through all the current ones like Core i7) or x64 (sometimes called AMD64, as AMD developed it) which is a 64-bit extension to Intel's x86. There's a trivial amount of older stuff still around for other ISAs that Windows supported in the past, I guess (Itanium most recently, MIPS and Alpha before that), but desktop Windows has never before been available on ARM.
In theory, once you have the source code for an app, re-compiling it for a new ISA is trivial. In practice, that's only true if the app itself is trivial, because complex software tends to have a lot of fancy stuff going on "under the covers" to make it perform better on specific systems. For example, compiling Firefox 1.0 for ARM would be a *lot* easier than compiling Firefox 4.17... but yes, people are working on it.
It's also possible to (very slowly) execute some legacy x86 programs on Surface using an app that translates the app's machine code (the binary, or "ones and zeroes", that a processor actually understands as instructions) from x86 to ARM, but that process has terrible performance. Apple was able to do it when they moved from PPC to Intel (x86) ISAs some years back, but that worked (sort of - it was still slow) for two reasons:
1) Most of the time, the new x86 CPUs were much more powerful than the old PPC ones they replaced, so software written for the less powerful chips still ran acceptably. This is not true on x86-to-ARM, where the best ARM processors available today are less performant than a typical x86 processor from some years ago. Add the overhead of emulation, and the performance sucks.
2) Apple could devote a massive amount of resources to producing highly optimized "dynamic recompiling" software that translated the PPC programs to x86 and ran the result directly, rather than taking the simple and easy (but very slow) approach of writing a program that fully emulates another CPU. We're a hacker community here; people are already working on getting the emulators to use dynamic recompilation instead... but we've had a total of a few days to do so thus far, none of us are paid to do this (we have lives, jobs, and other hobbies), most of us won't be anywhere close to experts in this field (i.e. nobody in their right mind would hire me to port software to ARM: I'm a security guy, not a computer architecture expert), and even leaving all that aside, this stuff takes time.