Ok so I've tried google, I've tried asking my uber geek programming friends, I've downloaded online books, I've looked at examples and I still can't find a solid answer. So hopefully someone here will be able to help me.
I want to know how to create my own header files in C++, but I don't just want to know HOW to do it, I want to know why I do what I do so for example in my searches I've seen reference to #ifndef, #define, and #endif statements that are apparently quite important, but I don't know exactly what they encapsulate and why they're there. I also seem to be running into problems when referencing my own header files in my main .cpp file, it complains the header file doesn't exist in the directory or something even though I've added it to the project as a new header file (I'm using Visual C++ express edition). So do they have to be in the same folder as all the other standard header files or what?
tl;dr - What is general form of C++ header files with explanation of meaning of #ifndef, #define etc, and where does the header file need to be located for use.