It’s easy to get in over your head quickly when jumping into IP Telephony, so hopefully I can help clear things up.
The big point to understand here is: Phone-to-server and server-to-server are off in their own separate worlds.
Another idea that may help clear things up is that your phones will only ever talk to your server.*
If you want to connect two servers with IAX, you can do that (and I’d strongly recommend it instead of SIP when possible). How the servers communicate with one another is completely independent of how phones communicate with your server. You could connect the servers with a couple tin cans and a piece of string so long as Asterisk knows how to use it.
The life of an average IP phone is simple: it wants to register with a local server that will connect its calls for it. It doesn’t care how that server (in our case, Asterisk) talks to the rest of the world. It tells the server “hey, I want to call X,” and then the server handles calling X and acts as a go-between for your phone and the foreign phone. Things just happen transparently from the phone’s point of view – it doesn’t need to know anything about where it’s calling or how it’s being done.
It could be an analog phone, a SIP phone, and IAX phone, a SCCP/Skinny phone… as long as it can talk to your server, it doesn’t care. Your server can then use IAX or SIP or whatever to find its way onto a larger network, paying no mind to how your phones are connected to your server.
Here’s some awful ASCII art that may better illustrate what a typical call “looks” like in a simplified manner:
Mic on your phone ----> | | ====> Spkr on outside phone
Spkr on your phone <==== | Asterisk | <---- Mic on outside phone
| --- audio from original phone
| === audio from Asterisk
Magic happens here
More accurately, here’s what’s most likely happening* in full:
_______ ______________ ______________ _______
| Your | | | | | | Their |
| Phone |<-->| Your Server |<<====>>| Their Server |<-->| Phone |
|_______| |______________| |______________| |_______|
(* There are exceptions, but for the sake of Asterisk discussion, they’re really not relevant.)