You'll want a static IP instead of a dynamic IP if you're running services on your computer that you'd like other people to access, such as a web server, ftp server, mail server...etc
The reason is not that you can't be reached if you have a dynamic IP, the reason is that your Internet Service Provider will change your IP every so often (i've had the same dynamic ip for a while now, +3 months i think, it has only changed once). So if you have a domain name www.mydomain.com[/url] which is associated with your IP, in the future if your ISP changes your dynamic IP, then [url]www.mydomain.com[/URL] will be associated with an incorrect IP so it won't direct visitors to your site. Of course you can easily realize this and change it, giving time for DNS to update it'll be fine within a day.
Unless you are a business or have some really big plans you probably won't need a static IP. Notice that, depending on your ISP, you have to pay more to get a static IP, they usually have a "Business Plan" or something which includes a static IP, but I've never checked to see how much more i'd have to pay (you'd also get more bandwidth and a better upstream with a business plan).
Notice that your ISP assigns you a dynamic IP using DHCP (this is all related). That's what DHCP does, it dynamically assigns IP addresses (making sure that no two computers have the same one). Usually you have either a traditional server (Win Server, Unix Server, ..) or just a simple router taking care of the DHCP. If you have a router at home, whenever you connect the computer to the router, the router, acting as DHCP server, dynamically assigns your computer some IP.
The alternative to DHCP, is for you to go to every computer in your network and manually assign an IP (static IP), making sure that no two IPs are the same. So DHCP is a lot better.
On to servers. What a server is is a piece of software running on some machine (any machine will do, but fast ones are better) that is listening in on a port. Ports aren't physical, they don't actually exist, a port is just a parameter varying from 0 to 65535 (give or take). A web server runs on port 80 for instance. So for example [PLAIN]www.yahoo.com[/url] has a web server listening on port 80 (they really have more than one server, but to simplify). When you point your browser to [url]www.yahoo.com[/URL], your browser does the following:
. gets the IP address that [url]www.yahoo.com[/url] is pointing to (with a DNS query)
. connects to that IP on port 80.
. talks to the server using the HTTP protocol.
. the server replies with an html document which is the webpage.
. the browser parses the html and displays the page
This is an over simplification, but it gives you the idea, of how ports are used. Mainly, the advantage is that i can have many servers running on a machine (Mail, Web, FTP) which listen on different ports, so you won't, for instance, connect [url]www.yahoo.com[/url] and instead of getting the web server, you get the mail server.
If you're a programmer, you use use a socket to create a connection to a port on some computer, in Java it's kind of simple, like new Socket(64.118.189.241, 80). That's my server's ip address, [PLAIN]http://www.bloo.us .