You have to
create separate user accounts. This ensures that one user can't access the data stored in the other user's profile, and vice versa.
Typically, programs like Chrome, Skype, WinRar and any other modern software create data folders inside the user profile when you start the program for the first time (see %AppData% and %LocalAppData% folders).
This means that you don't have to install programs twice. You install them once into Program Files, and then all users can utilize them, but with their own data.
If you're determined to "hide" the fact of the installation, you should install the program in your profile somewhere, and not in Program Files. I put "hide" in quotes, because it's a lame way of hiding. It's still possible to learn about the installed program even with a limited user account.
There are a few catches, though
1. Administrative accounts can access everything, if needed. Therefore, the only way to achieve your goal is to have the admin account to yourself, and have your roommate use a regular user account.
Consequently, you'll have to install software and perform any OS management tasks, because your roommate won't have permissions to do that. I bet he or she won't be happy with this setup
2. Even if you manage to stick your roommate into a regular account, it's relatively easy to boot from a CD/USB and access everything. This means you have to disable boot from CD/USB in BIOS and set BIOS password, so your roommate can't access these settings.
3. Even if you manage to configure BIOS, it can be reset by removing the mainboard battery. This means you also have to physically seal the desktop or put a lock on it.
If your roommate still wants to stay with you after all this, he or she must be a really good person