many people have codebases that they don't have the luxury of building with the VC project build system. yet they may still want to use the Visual Studio environment to get intellisense on their code etc etc. unfortunately, the intellisense editor features in VS require a project. the solution to this dilemma is what we call a "makefile project". this is really a misnomer, but we continue to call them this for historical reasons.
in a makefile project, the project system doesn't pretend to know anything about your files and how they are built. instead it allows you to set a command line of your choice to build (and rebuild, and clean) the entire project. (the typical example is to run "nmake", hence the "makefile project" appelation. a makefile project doesn't have the usual build tools (compiler, linker, midl etc.) associated with it. if you go to the property pages you won't see them. instead you get one tool, the "nmake tool" (again, misnamed). the nmake tool allows you to set the command lines to run for the build, rebuild and clean actions inside the IDE. when you perform one of these actions, the appropriate command line is run. it also lets you set the output file that is generated by the build, and the project system will do a primitive time-stamp check to see if that file is out-of-date.
using a makefile project you can now add all of your c++ files and the intellisense engine will try to parse them and provide you with intellisense, autocompletion etc. in the upcoming whidbey release, makefile projects will give you even more control by letting you specify the include paths and #defines for the makefile configurations, so that you get more accurate intellisense. [technically, there are really only makefile configurations. a makefile project is just a collection of makefile configurations; in fact, any project could contain makefile configurations. you can change a configuration's type by going to the property pages, general page with the project selected, and changing the "configuration type" property. when you apply this change you can see the available property pages change to match those that should be shown for the type you selected.]
another useful feature in the VC project system is the /useenv switch. if you launch devenv.exe with the /useenv switch, VC will pull the paths for executables, #includes, libraries and assemblies from the PATH, INCLUDE, LIB and LIBPATH environment variables respectively, instead of its internal data. this is quite useful if you normally have a command prompt open with your build environment already set via a batch file or the like. (this is exactly what we do here for using VC ourselves).