1. both of them are used to tell how to build a project. Especially, about makefile from wiki:
2. Makefile is used by make utility to build a project/program, while vs project is used by VS. for make utility, there are many developed by different organizations and corps. MS has its own nmake.
3. For VS, it has Makefile project type, by creating which, the project's building will be organized by a make file which will be used by nmake; while for normal projects, the project file is the configuration file to tell how to build a project. MS MSDN note about project file is: "A Visual C++ project file is an XML file with the extension .vcproj, which contains information needed to build a Visual C++ project. .vcproj files are not compatible with NMAKE." About how to create a nmake project, please see this page on MSDN.
"you either need to make a new project file with the make file (and all references to the code are in the make file, it just compiles in the VS IDE), or you need to re-create the functionality of the make file in a new project that functions as a "real" VS project with files and such."