Not every website is hosted by another site. Every website is hosted on a server. That server has an IP (internet protocol) address, possibly several (one for each site) if it hosts several sites. You CAN access a website directly using the IP address (it looks something like 69.147.76.15 -- www.yahoo.com). Try it. If you use the Windows PING command from the command line, it'll give you the IP address for the site you're pinging. If you don't have a domain name, and serve the website on an independent server, you won't need another machine, just the server (your machine) and the client (your visitor's machine). No domain name, so no need to hit the domain name servers. Your visitors would then have to use the IP instead.
When you type in a URL, like www.yahoo.com, you're accessing your ISP's Domain name servers (DNS). Those are directories that translate the human friendly URL into an IP address before making your request.
Hosting a website off it's own server can be quite expensive though. There are shared hosting options (check online for "web hosting"), that are much cheaper. If you register your own domain name (your host company can do that for you for a fee, or you can do it yourself, and register your site to it -- there's still a fee involved), it will look to most people as if you're an independent site. Registration is typically less than $100, depending on what domain type you're after. The cheapest are typically the .com domain names. I'm not sure what it costs now, but 5 years back, I registered one for about $25, and that was good for a year. My second site (not there anymore) was a .ca domain, which cost me $60 for a year. That's not including hosting, that's just to set up a domain name (like yahoo.com -- don't bother it's in use) you can use to redirect people to your website without having them use 69.147.76.15. The trick is to get the registration and hosting in sync so that they'll both start and expire at the same time or it'll be a pain to keep track of (you'll have to renew both when they expire to keep going). Pricing for web hosting varies a lot.
You can also use your own computer as a server, running a webserver program like Apache, and using your assigned IP, but there's two problems with that:
1. Most home internet connections, such as cable or DSL, use a dynamic IP. While there are services that will track your IP and forward visitors to your current IP, there's always a bit of lag in updating, so your visitors might not always be able to get to your site. Especially since most ISPs rotate IPs within a pool every few hours to discourage you from using your machine as a webserver (most user agreements forbid it).
2. A highspeed DSL or cable connection is typically pretty slow for a website. Yeah, it's fast for you, but that's the download. Residential internet options are typically asymmetrical, so upload speeds are a fraction of the download. Since a server sends stuff, the upload is important, and a residential connection will very quickly become saturated, making your site agonizingly slow for visitors unless you keep it very simple. Even if you keep it simple, if you get a lot of hits, it's still going to be agonizingly slow.
Uploading isn't a problem. If you're using someone else's servers to host your stuff, they typically have a web upload form that allows you to upload directly to your site directory. It's really quite simple, easier than the sub-website hosting like you see with free web hosts like Geocities. If you want to go old school, some hosts offer FTP access for transfering files directly to your host directory.