why would I host the code somewhere like this?
A key point of open source software development is to share the source code. There are several ways to do this, like putting tar/zip files on a web or ftp server. Services like google code (or sourceforge.net, gitorious.org, bitbucket.org, and many others) take away the need to run your own servers for this purpose.
And would that mean I have to take the site off of my current hosting, or is this an entirely different type of hosting?
These services are not general-purpose web hosts, but run very specialized services. They are not meant to be the homepage of a product, but more a developer dashboard.
With google code you get
- a wiki
- a bugtracker
- regular file download space
- a version control server
Of course you can set up these software on a regular web server (the version control stuff might be tricky, but that depends to much on details), but the main benefit of using a development hoster is that you don't need to take care of these systems for your own. The main drawback is that you have no control about what software is used on the server, you have to live with what is available on that host. You also need to consider what happens if the service gets out of business(ok, google never fails), and if you can take the data from the current host to another one or your own server (think of backups).
What happens when I make my site open source, what rights do I have,
This is a difficult question, since it depends on the law of the country where you live.
what rights do I give away.
This depends on the license you give to the product. It can go from proprietary open source (think of PGP) where the user basically can't do anything with the code, on the other end of the scale is public domain, where every one can do whatever he wants.
How does it work, do people just come and throw code at me for free?
This is very unlikely to happen, since your product need enough popularity in order to attract other developers.
[...] and now it's asking me if I want the project to have Git, Mercurial, or Subversion code hosting.
These are three different version control systems, where Subversion is a centralized one, while Git and Mercurial are distributed.
There are religious wars about which one to use, but the main point is to use one. See http://martinfowler.com/bliki/VersionControlTools.html for more details.
When to choose Subversion:
- You have binary files, which can't be easily merged, and need the lock->modify->commit->unlock workflow, which subversion supports¹
- You need to check out only a part of the directory structure.
¹ There is a lock extension for mercurial, but I have no experience with it, and can't say if it is usable.
When you don't need the former features, it is better to use Mercurial or Git. Both have the following advantages over Subversion: