You would register a domain name through a registrar like
GoDaddy. You will need to pay a yearly fee to hold onto your domain.
Your domain is hosted at wherever you get a hosting account - whether that's with a host like MediaTemplate or DreamHost, or on your own dedicated server.
You can run a server from your own home, but should consult your ISP's terms of use; some do not allow home users to run hosting servers.