I have been hearing that Windows 8 and Windows 8 RT are not API compatible
I don't know where you heard that. The modern app WinRT framework (not to be confused with Windows RT, the name of the ARM version of the Windows 8 OS) is completely cross-architecture, and any language you write with targeting it (HTML5+JS, C#+XAML, C++) can also be cross-architecture. Of course you can choose to do architecture-specific stuff, or reference architecture-specific libraries that would limit where your app can run, but that would be a conscious choice on your part.
I suspect you've confused the fact that Windows RT for ARM does not allow you to write or install non-Modern third-party apps, which means no desktop apps for you besides the built-in Windows stuff (notepad, desktop IE, etc) and Office. That is not related to Modern apps at all.
God only knows what Windows Phone 8 will look like
Given that Microsoft couldn't figure out resolution-independent UI for Windows 8, my completely speculative guess is that it'll be similar to the Wnidows 8 WinRT API set, but require you to build a different GUI. Kind of like how WP7 supported (mostly) the same XNA as Xbox 360 and Windows, but you still had to redo the display (and control) portion to make it work on the phone. Code is shared, but two separate and distinct binaries would need to be built to support both platforms.
But we won't know anything until Microsoft releases the WP8 SDK. Hopefully that will be today (10/26), but we'll see.