There is a system file table. It has one entry for every open file. Your process has descriptors that point to file table entries. Let's change the example to a text file.
So the shell syntax starts out " > results.txt". To run that the shell will need to do something like:
fd=open("results.txt", O_WRONLY, 0);
We actually had to open a file. This filled in a file table entry. And now fd 0 points to that file table entry.
Now the syntax continues "2>&1" and to run that, the shell does something like:
Here we don't open a file. It's just that whatever file table entry fd 1 was pointing to has been copied into fd 2.
There is more to this than just saving an expensive open call. If we write to fd 1, what ever we write goes into the file. If we then write some more, the new data goes at the end of the file. We can write to fd 1 and we can write to fd 2 and they don't step on each other. That's because a write to either fd updates the file pointer in the file table entry.
In contrast, " > results.txt 2 > results.txt" gives us two file table entries and two file pointers.