Also, I constantly name files in the same directory the same thing except for case. In my ~/tmp directory I have unrelated foo.c (C source) and foo.C (C++ source).
.C came first. I don't usually use it though; I usually use .cc or .cxx, but if I'm making some tiny test source, I often use .C. I'm strongly opposed to the .cpp extension because calling C++ "CPP" leads to confusion with the preexisting (before C++) use of the initialism to refer to the C preprocessor. There's a reason why CPPFLAGS refers to preprocessor flags and CXXFLAGS refers to C++ flags.
Symlink your desired location on the target disk to the place the system thinks the software should go. (In my case, /usr/local/games is a symlink to a different drive.)
XDG specifies the capital names, but to be nitpickingly technically precise, linux systems don't do this. It mostly is done by the distribution maintainers, and the XDG specs. A base system does not usually have a notion of anything beyond your $HOME.
Try adding a user: sudo adduser basicuser. If you ls -al ~basicuser you will see it's almost empty, just the .bashrc (or in my fedora, there's some .mozilla crap in /etc/skel that also gets bootstrapped).