[Nook Color Android Development] mateorod:
Since these are somewhat related...

Virtualbox is an easy setup, in my opinion. There are a bunch of guides out there and they should all serve your purposes. Make sure you download a 64 bit system image, Ubuntu is a fine choice if you are coming from Windows, especially if this is your first experience with Linux. The Google computers famously run Ubuntu 10.x, but that is only because the older versions of Android can only be built on that system and earlier. You can use 12.04 for ICS and JB no problem.

Allocate at least 3 gigs of RAM to the VM. You could conceivably get away with a little less, but the build will fail to compile if you skimp on memory. You can add more RAM to the VM after it is setup if you want.

I would recommend at least 25-35 gigs a the hard drive. You can have either a static or dynamic VM, where dynamic ones can grow in HD space if need be, while static VM's can't directly be expanded. I use a static image personally, because they are supposedly faster, but I don't think the performance of the dynamic images are really that much slower.

The .repo folder is where all the objects you are pulling down are stored, and it does appear bloated if you don't know what it holds. The source is managed by the git program which is a content based system. For each change and commit, instead of a series of diffs, git is holding objects. That makes switching from branch to branch a breeze, as well as rolling back changes. You can checkout a change from any point in the process, and git will roll your tree back pretty much instantaneously to the state of that commit.

If you are ever working on a file and have saved different versions of it as you go along, you are pretty much mimicking the git process, or I guess vice-versa. But that does require the investment in storage space. But this allows us to keep any version of the branch on file.

For instance, with the ICS repo, we as a PA community decided to roll back to non-OpenGL and no HWX/A. Instead of finding and editing those files again, I simply reverted the commits that enabled them. There were objects saved on file that I just restored. I could do this for any change, tag, date or tree. It is a smart and fast way of working, and by indexing each object by it SHA tag, we can eliminate the chance of mix-ups or corruption, since the SHA tag is created based on the exact content of the file. That also keeps us from having to store multiple instances of the same object,

That is why I recommend syncing the Jellybean sources directly on top of the ICS tree, no need to store the common objects on multiple places on your computer. Now that my computer has both sources in the same directory, I can checkout any version since the intial commit of CM9 all the way to today, on the project as a whole or just in specific projects.

The tl;dr version (VM and Git info)

3+ gigs of RAM

25 gigs HD space minimum (go to the large end if you choose a static size)

The directories will seem obscenely large- this is normal

You can install a Ubuntu setup within Windows using Wubi. I have not used it personally, but I know it is highly regarded. I dual booted for awhile but I ended up deleting my Windows installation shortly afterwards, I found I never used it anymore...

Try a VM first, as there is no cost or permanent change to your machine. If you decide you are going to use a Linux OS often, then you can consider the more intensive options.