What does a Tilde Mean on Linux?
On Linux, specially in terminals and Bash-like shells, a tilde character (~) means the same thing as your user's home directory, e.g. ~/Downloads means /home/your-username/Downloads.
More technically, the home directory is available to the shell as the environment variable $HOME. When you use ~ in the command-line, the shell substitutes the tilde by the value of $HOME before passing the argument to the terminal command.
For example, if you type ls ~/Downloads, the ls command never sees the tilde, because the argument passed to it by the shell is going to be /home/your-username/Downloads. The same thing happens if you type ls $HOME/Downloads. The value of $HOME is substituted by the shell before it reaches the ls program.
Some non-shell applications may also support the tilde, although in this case they have to do the substitution themselves. For example, in some file managers like Nemo, you can type ~/Downloads in the address bar and it will resolve the text code to the appropriate filepath.
Observations
Not so special: the tilde is not a reserved character on Linux. Consequently, it's possible to create a file with a filename that is literally just a tilde, and then it's going to be very scary to DELETE it.
Note: do not run the command below. It's not worth the risk.
rm ~ won't work in this case because that will try to remove your entire home directory, and you can't do that without a flag. That's great because otherwise some people (like me) would have accidentally deleted everything.
In this case, in Bash, you need to escape the tilde with a backward slash (\), e.g. rm \~ will try pass just the tilde ~, literally, as argument to the rm program, and then if the rm program finds a file literally called ~, it will remove that.
By the way, an asterisk (*) isn't a reserved character either, and it made me sweat a lot when I accidentally created a file named *, because rm * WILL DELETE ALL THE FILES in the current working directory, and this one doesn't even need a flag. The same solution works in this case with backslash, but, for added assurance, it's a better idea to move the file to a separate directory instead of deleting it, because that allows you to confirm that you picked the right file, and not all files by accident.
$ touch \*
$ mkdir asterisk
$ mv \* asterisk/\*
$ cd asterisk
$ ls
*
The method above reduces the risk of it going wrong.