In Linux, actually all characters except NUL are allowed, even newlines and all kinds of other fancy Unicode characters. But it depends on the filesystem used which characters may not be. Or have special meaning like the period as a first character.
This is a trap Android users also often fall into, when writing to FAT-type filesystems on SD cards. Or myself, when not thinking and happily using colons in filenames, because these aren’t allowed everywhere on Windows filesystens like FAT, FAT32, or NTFS.
Then again, I wouldn’t feel myself punished if only the more usual characters are allowed. Most users simply don’t use the more abstruse (and hard to use) possibilities. Although I often missed the colon als usable character in note titles.