Yes, but I'm using my machine to copy the file onto the drive, so wouldn't it then exist on the drive with me as the author?
That does not matter for the cases I was referring to here (common distribution methods, which include things like uploading the file to some server or web host which users then download the file from). Distribution by USB thumbstick is not a particularly common way to distribute the software that most people on this board write (games).
In the upload, or similar, method, the contents of the file go to the remote machine. Not the metadata (such as who owns the file on your system). A file is created on the remote system, the web host, by whatever service account the webserver is running as. That account owns that copy of the file on that machine. When the webserver serves that file to some client via a browser download link or whatever, the browser, which is running under the user account of the operator of that machine, creates a file on the local disk. That file is owned by that account (again, the user of that machine) and the web browser fills it up with the contents of the file sent by the server (which does not include metadata).
What kind of file system? I'm using Windows 7, but it needs to be compatible with any version of Windows, and I'm not sure how to change the file system anyway, do I just reformat the drive?
Yes, reformat the drive. FAT32 is probably your best option. It doesn't support file permissions (they are determined by how the drive is mounted), and it probably doesn't support ownership metadata as a result, although I don't know enough to say for sure. No filesystem is supported by every version of Windows ever. FAT32 is old and creaky and mostly terrible, but modern versions of Windows will read it and it doesn't have file permissions.
You can also use NTFS (the likely default) and try to wipe out ownership of the file, assigning it to the Everyone or Administrators group using takeown, or to a dummy user.
Okay, in that case, I guess what I don't understand is, how can the source code affect the compilation itself? How would it know to look in a specific function for a specific statement and then be like "oh, well now I'll compile differently"?
Source code almost always has the capability to impact the compilation process, and certainly always directly contributes to the makeup of the compiled files. Languages like C++ and C# (although C# less so) have preprocessor directives that can control which portions of a source code file may be read. C++ has templates, which are a way to direct the compiler to perform certain transformations during the compilation process. Et cetera.
In this case, the things you are editing the AssemblyInfo.cs file are called attributes. They are a C# construct, you can identify them by the square brackets (in a context where arrays, the other use for square brackets, don't make sense). So, for example the copyright string attribute:
[assembly:AssemblyCopyrightAttribute("Whatever")]
The [] indicate an attribute. The "assembly:" indicates that the attribute is applied to the assembly. "AssemblyCopyrightAttribute" is the name of the attribute. ("Whatever") is the value; you can put whatever you want in here.
The C# compiler "knows" about attributes applied to the assembly and will write them into the correct place in the PE file (the DLL and executable file format used by Windows) when it produces the output file. It does this simply because it is written to do this; there's no particular magic.