Sedo is where I bought my domain - over Escrow - and is a global marketplace to buy, sell, and park domain names. They've over 18 million domain names for sale, but the big part is that they're a huge, well-respected company. This may not be important if you're spending $150 on a domain, but in a $15,000+ purchase - which happens in many cases - you will be potentially buying from a foreign entity, that you don't know, and many of them will suggest an escrow payment. This means you put the money in an account owned by a third party that will hold it and only pass it on once the domain has been transferred over into their name (which in this case is what Sedo does). This can be quite disconcerting - but Sedo is well-known and has done many, many deals - and the process is about as full of hand-holding as handing tens or hundreds of thousands of dollars for a domain name can be.
The way that competition is supposed to work between registries, is that lots of companies go to ICANN and say “We think we can reliably manage .com, and we think it would cost us [$5] per domain.” ICANN reviews these bids and awards the .com contract, which lasts for a fixed period of time, to whomever they deem best-suited to the job. In this time, other companies can think of ways to manage .com better/cheaper, and try and win the next contract. This, in theory, would provide an incentive for registries to innovate, a big part of which would be in lowering costs.
Who is in charge of all of these processes? Most countries manage a Network Information Center (NIC). An NIC is the main database that has all the information regarding what domain names have been registered and the IP address associated with each of those domains. The nonprofit organization the Internet Corporation for Assigned Names and Numbers (ICANN) is in charge of creating and managing the procedures for internet namespaces.
Domain names can be used in a number of ways. Direct visitors to your website’s home page or use complementary domains to send them to specific areas of your website ( e.g. yourcompany.jobs for a careers page). Or, forward a custom domain to an existing social media account, like your Twitter profile or Periscope channel. With a domain name you can even set up custom email addresses like email@example.com, which can be used to conduct business or communicate with your followers. More.