This is why IRC (Internet Relay Chat) was created - two people talking directly to each other is generally a troublesome task. Your best bet is to setup a single chat server on your computer, and forward the correct port(s) for it, and have your friends connect to it.

For problem #2, I'm not sure what could be wrong... could you paste some of the code?

#3: Since your IP may be dynamic, take a look at dyndns.org's services, they offer free myname.dyndns.org with a update client that will report your current IP to their DNS servers. Then, you can set your chat client to use this domain name.