FIRST You must know, that your external IP adress (you can see it at http://whatismyip.com) is public IP adress and your ISP don't use it for NAT translation for other internet user.
Without PRIVATE PUBLIC IP adress you can't start public minecraft server!!! (In this case you can use Hamachi).
If your external IP is Public and private, you must know that is static!!!
If you have dynamic IP adress, your friends must know how IP have you got at this time (you can use dynDNS services).
If you have public (private) IP from you ISP, static or dynamic (you know about dyndns or you like call to friend and tell him your actuall IP) read down, other case or if you don't know what I talking about above, don't start your own server.
Let's start server in local network (f.e. at home) and configure it to our friends can play on it over internet.
First we need to know about local network adress, in this case we have network 192.168.1.x,
where 192.168.1.1 is our router. (in your network you can have different IP adresses)
Now we must check our future server IP adress.
Under windows just type: ipconfig under console and read local network connection ip.
WARNING: 127.0.0.1 is loopback ip adress, we can not use it to connect from other computer to server!!!
We want to start server on computer with address 192.168.1.101 (in this case)
First we must check that this ip is from dhcp (dynamic or static).
We need static ip adress for our server, so we must assign it on dhcp server (on router)
or set it manualy on computer (minecraft server).
Now we can check our server.properities and find line server-ip=
We need to set it to be empty (not set IP adress in this line).
Last step is check firewall on MC server computer. We must disable it or for better security enable and allow connect to port 25565 from all ip.
Now we can play but only from local network. Our server from local network is visible under 192.168.1.101 IP.
Its time to configure router for our friends.
We must find options to redirect port from internet to local network.
We can do it it two different ways.
First we can configure our server adress (192.168.1.101 in this case) to be DMZ.
We must find this option in router configuration.
This method is dangerous, becouse our computer (all ports) are visible from internet now under xx.xx.xx.xx (our outside IP).
In this case we must set up firewall on MC server computer to be filtered all port without 25565 (minecraft server port).
Second way is redirect port (25565) on router to our inside IP adress (192.168.1.101 in this case).
So 25565 port on router, we redirect to port 25565 on 192.168.1.101.
Now our friends can use xx.xx.xx.xx (we can check this adress on http://whatismyip.com) to connect to our minecraft server.