Yes and yes. First off, if you're gonna host some site, let your ISP know, and pay the extra money they ask for for a commercial site, as it puts you at the front of the line for getting reconnected should a router fail or something like that. I would recommend DSL over cable modem if you can get DSL where you are.
If you get an external DSL modem set up to run in NAT mode, then you can run as many machines in the backend as you want (or just one if that'll do) and only have the ports open you need. For security reasons, it's a real good idea to have all the ports you don't need shut down at the router/firewall.
You can host multiple domains on one IP by using named virtual hosts, a feature of http 1.1, which apache supports quite well. We use this on our company intranet machines to conserve IP space and to simplify server management.