You really need to get onto your ISP and find out if you can order a static IP address. A dynamic IP address can be done, you could use something like DynDNS, but whatever you use you will always get at least a little bit of downtime when your IP address changes.
If you're just hosting a personal site I recommend going to someone like CredibleHost.com. You can get a small site hosted with them for less than $7 a month, and with them you can sleep without worrying your site will go offline. You'll also be on a 100Mbit connection, meaning your site will be alot faster than if you were to host it yourself. Do a search on them and other providers and look at the Hosting Offers and Requests forum. This is just what I'd do as apposed to getting a small server setup on my home connection, but of course it's up to you.
1 registered domain such as yourdomain.com.
1 web server software package (I recommend Apache)
1 mail server software package (I recommend MDaemon)
1 dynamic IP address service that supports MX records
(I know one but I can't mention them here)
Register two A records and one MX record with the dynamic IP address service: one A record for www.yourdomain.com, the other for mail.yourdomain.com, and the MX record should reference mail.yourdomain.com. Initialize the service so that when you ping these they show your current public IP address. Get any help you need on this from the dynamic dns service you sign up for.
Now set your firewall to allow incomming port 25, 110, 80, and send them all to whatever system you are using as a server.
Now install your mail server software and web server software. The mail server software company's instructions should guide you through setting up the mail server.
For help setting up the web server, refer to one of the many, many tutorials on the web on setting up Apache on Windows.
There's your overall recipe; write back with specific questions.