I have used the Project plugin for quite sometime. I've been fairly happy with it. I did make one modification to mine, so that I can generate tags over a whole project. It's fairly easy to add a new project to the Project window with the "\C" command inside the window. It will prompt you for certain parameters such as path, target directory, project name, and file types to include, then it will recurse the path to find all your files and then display them in the window. Be sure to save it!
The downside of Project plugin is that it only keeps track of files and does not track certain environment variables related per project. Not a big deal if you only have one project. The Project plugin can keep track of multiple projects in it's window by adding more, but you can't really "switch" between project environments seamlessly.
That is why I find SessionMan indispensable for project session management. Comes in handy when jumping back and forth between different code projects. I basically give each session a name similar to my project name. With each session, I map the project plugin command (:Project YourProject)) to a key where I can retrieve the project in each session. Also, it helps to keep your paths saved on a per session basis. This facilitates tag lookup for omnicomplete and tag navigation as well as the "gf" key combo for opening header files.
Those two plugins work great together.
There is a newer plugin called MyProjects, but the last I tried it had some window and buffer issues that I'm not used to. It also didn't work well with my session management plugin. It's still in early development.
EDIT: I also just found exVIM online. It looks interesting and might be up your alley. I may have to try it out myself. Note that there are multiple install options.