From Wikipedia :
In computing, the working directory of a process is a directory of a hierarchical file system, if any, dynamically associated with each process.
It is sometimes called the current working directory (CWD), e.g. the BSD getcwd(3) function, or just current directory.
When the process refers to a file using a simple file name or relative path (as opposed to a file designated by a full path from a root directory), the reference is interpreted relative to the current working directory of the process. So for example a process with working directory /rabbit-shoes that asks to create the file foo.txt will end up creating the file /rabbit-shoes/foo.txt.
Generally, for all programs, the "current working directory" is the directory in which the program will run.
It will use it as a scratchpad for writing temporary files - yours is empty after running, because DoxyGen tidies up after itself. Try looking at the directory while DoxyGen is running, or interrupting DoxyGen & see what files are left lying around.
Also, as explained above, any relative paths are relative to the working directory. E.g. the file ..\foo.bar means the file foo.bar in the directory above this one, where "this one" is the current working directory.
The word "current" indicates that the program itself can change the working directory as it runs.
What you are currently doing is just fine. Or, you could use a sub-folder of the DoxyGen application directory. Personally, I use the root directory of the source code that I am running DoxyGen against, as this lets me shorten some path names which I give to DoxyGen.