These are homophones in Japanese. Same thing as words like their/there/they're or seas/sees/seize, etc. Words that sound the same but are written differently. The Japanese language has tons of them. Often, the ambiguity around homophones is used as a source of humor, causing misunderstandings between characters in anime/manga or puns that add a layer of humor to an otherwise normal thing to say.
Both kinda, they have different scripts because they have so many homophones. Japanese has far fewer phonemes (possible sounds) compared to english, this combined with the fact that you usually can't have two consonants together without a vowel in between makes it so the amount of possible words is very limited. Because of this if you used just the "phonetic" script hiragana ( each character represents a sound) then it would get confusing since かみ that represents the sound "kami" would be confusing as to what you're referring to. So they mix in kanji, Chinese characters where a character represents a thing, to distinguish these homophones.
Not tonal, but pitch accent difference. The first and last words (紙 and 髪) are indistinguishable by pronunciation, both are flat (pitch accent 平板 or 'flat'). For the second word (神), the pitch accent descends for み (pitch accent 頭高 or 'head high').