As has been suggested your "modem" must have some routing functionality or all your home PC's would be sitting on the same subnet as your modem. Effectively you would be getting n external network addresses.
Almost all modem/routers have port forwarding capability and depending on your requirement (service/application/port) you should be able to manage multiple port forwards to different machines.
Usually the setup is something akin to forward all traffic on port x to IP address y.
The other side of your question is external access, and this comes down to a dns management programme that will update a common name to your leased isp ip.
I use dyndns but I think they've pulled the free service option, there are others out there. Essentially what this will do is give your isp assigned IP a meaningful name which in the event of release/renew will be updated to point to the new IP.
e.g. you can make xxx.xxx.xxx.xxx <- isp assigned ip = joshua.oc3dmyhouse.org
Then dependant on the application/port you want to access you just point it to the dns name and the resolution is done regardless of what your assigned IP might be.
I use this for RDP, FTP, Minecraft Server, etc etc without any problems your control layer is within the port forwarding. I would also say that you could host multiple instances of the same application on different hosts providing you manage your ports closely. So you could have 4 FTP's running which by default will all want to use port 21 but if you set them to 21, 121, 1021, 10021 then you'll have no issues hitting the right server.
I'm not sure if any of this has made sense, networking at this level isn't the black art people sometimes think it is.
Cheers
Lee