There are tons of places you can buy domains. Such as godaddy.com. I use www.namecheap.com
and get my domain names for 8.88, and pay with a credit card. I own www.pbninja.com, www.pwntheworld.com,
and several others. [the websites were taken down by my last host, because I was using too much bandwidth]
The cheapest you will ever find 1 terabyte and have it be half decent is $50. Anything cheaper will probably have lots of downtime, and probably be oversubscribed. Go to aitcom.com for a 1 terabyte dedicated server for $50 a month. Just to warn you, you better make a script that halts your website and any downloads when you reach 1 terabyte, because they will absolutely rape you if you go over the 1000 gigabyte limit. I read a story about someone who went 4 gigabytes over and he got a $400 dollar charge, not fun.
If you want a much better company, managed.com and the cheapest server there is 60 dollars a month.
As for designing the webpage, you could always use phpnuke and a template, or if you want a program to design your page, use macromedia dreamweaver.