SLA (service level agreement): You'll need one from where ever you get bandwidth. It means if you don't have bandwidth since some guy down the street took a backhoe to the fiber backbone and your server falls off the Internet, you have an agreement that the bandwidth provider will get you hooked up within an agreed amount of time.
Running from a DSL/cable connection will not be acceptable for anything bigger then a couple low bandwidth sites (plus, do you actually intend to use that connection for your own browsing?)
Then you have the whole IP issue. You're going to need a static IP. Period. If it changes, you're screwed. That and you'd have to update the name server. Talking about name servers, you'd have to have a name server running and talk to your ISP about allowing their name server to point to your new name server.
If you're comfy with networking, then you'll know what you're doing. But since you haven't really thought about these things (yet), then I'd just go with shared hosting until you're sure you know what you're doing. In the meantime, setup a box at home and give it a whirl (but don't host paying sites or sites that need 24x7 availability). DSL/cable providers tend to block port 80 so you'll need to change the port your server listens on and may need to fiddle with any routers you have in place.