This directory is the only directory use by the build system to place all the intermediate files used for the build. You can remove this directory at any time, or try to do it. As the files are all intermediate, you don't risk to loose anything. However, as the build is usually
incremental, the time for build may increase, as some work will be done again. Importantly, deleting of this directory is one of the ways to completely clean-up the project.
Now, as the files are intermediate, you don't need to look into this directory. Well, almost. Sometimes, this is useful to learn how some things work. One example is this: WPF project generates some common code and compiles with that generated code, so it is placed in the "obj" sub-directory. That includes the
Main
method and some other stuff. In a number of cases, you need to make this code custom by just writing it. Instead of reading the documentation, you can simply find the generated code in "obj" directory and see how it should be written. Got the hint?
Now, the problem about the project file is much more complex; I hardly could answer it in one short post. This is a really advanced standard of project files used to work through MSBuild.exe.
Not only you can use it with Visual Studio, but you can use it on many systems (Linux, Mac OS X) with Mono, you can develop your own build steps ("Tasks") through development of specially designed build assemblies, integrate any custom tools, 3rd-party or your own compilers for different languages (not only those targeting .NET) and a lot more.
Most importantly, you can build any project or solution without Visual Studio. MSBuild, as well as C# and VB.NET compilers comes for free with the (redistributable) .NET Framework. You just need to execute
MSBuild <parameters>...
.
Please see:
http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx[
^],
http://msdn.microsoft.com/en-us/library/vstudio/ms164311.aspx[
^].
First branch of documentation describes programming interface and the rules for the development of the project file, the second one — describes the command-line parameters of just the the MSBuild.exe application. Learning the first one may need considerable effort, but if you need custom of just advanced product build, you can get amazingly neat and highly automated results.
[EDIT]
Please also take a look at my past answer; some part of it is related to the topic:
How to use cs class in a VB web application[
^].
Good luck,
—SA