I am trying to make something but not sure of what components or things I must do to accomplish it so I will start by telling what I am trying to do:
I am wanting some sort of camera that connects to my laptop's usb and I would have an interface on which I can click the button "take picture" and the camera will snap a picture and store it in some given folder.
I am okay with C# or arduino's C. I am just not sure how to accomplish the hardware part mainly...
You might want to tell us what camera you have. Some cameras have this capability already (called tethering). And you would use software either provided by the manufacturer or a third party to do the tethering. In addition to transferring to the PC, with some cameras, you can control it from android and apple smart phones. A few have wifi capability, and the pc can control the camera directly.
Some cameras take a wired or infrared shutter release that takes the picture. Here the Arduino can help, emulating the shutter release. There are several posts about ways to do this, and at least two commercial companies (triggertrap, cameraaxe) that sell both complete systems and Arduino shields to do this. Note, it only takes the picture, it doesn't transfer it up to the computer.
Users have figured out on some Canon cameras how to replace the firmware with their own to add various extensions (CHDK): http://chdk.wikia.com/wiki/CHDK, and you might be able to find an extension that does this. There are similar hacks for some Panasonic cameras, but my sense is it is pretty much limited to extending the movie mode on Panasonics.
If you don't have a camera with capabilities, it is possible to control a servo so that it presses the shutter button when the Arduino tells it (arduino would be listening to a command from the pc).
In order to transfer the file to the pc and you don't have full tethered support, if your camera uses SD cards, you could presumably get an Eye-fi card and have it wirelessly upload files as they are taken to the pc.