There are two different architectures being used in the Surface tablets. The Surface RT uses an ARM processor (nVidia Tegra 3), while the Surface Pro uses an x86 processor (Intel Core i5 Ivy Bridge). x86 has been around since the early days of Windows, thus the Surface Pro can run any application your desktop, laptop, or ultrabook can. However, the Surface RT can only run apps that have been developed to run on the ARM architecture. Since the chips speak different languages, the applications have to be able to speak that same language.
Now, with Visual Studio 2013, you can develop applications using one code base, but deploy to either x86 or ARM. And I believe you also have the option to deploy as universal, in which case, your app would be available in the Windows Store on both the RT and the Pro.