What ؟ means
It closes a question. In Arabic-script writing it follows the final word with no space before it. Read the words for tone; the mark only tells you to read them as a question.
It evolved in print rather than arriving as one invention. In 1839 the writer Faris al-Shidyaq used a European-style question mark in his Arabic book al-Lafif, printed in Malta, then dropped most of the experiment in a later edition. Older manuscripts organized reading with grammar, rhyme and Qur'anic pause signs, not with this mark.
It settled through a reform debate. In 1893 the writer Zaynab Fawwaz described a question mark ending a question and noted that newspapers already used punctuation, while Hasan al-Tuwayrani proposed homegrown alternatives. In 1912 the scholar Ahmad Zaki formalized an Arabic punctuation system to make printed text easier to read aloud, over objections to signs borrowed from European writing.
Why does it point the other way?
It follows the direction of Arabic-script text. It belongs with the redrawn Arabic comma and semicolon. Those are separate characters because their Arabic forms differ visibly from Latin punctuation; a font does not rotate the Latin mark for you.
Landing on the wrong side is a separate problem. In mixed Arabic-Latin text, punctuation at a direction change follows the paragraph direction and neighboring characters, so a correct mark can jump to the wrong visual edge. Set the text to right-to-left; switching fonts cannot fix the ordering.
Persian and Urdu prose uses this same mark, because both are written in Arabic script.
Neutral question punctuation; answer the words before it rather than guessing a mood from the curve.
Its mirrored shape does not signal anger or sarcasm.
Don't confuse it with
1Questions people ask
1Why is it on the wrong side?
Usually a bidirectional-text problem. Set the paragraph or text box to right-to-left; a new font cannot repair punctuation caught where Arabic and Latin text meet.
How to type ؟
؟\061FCodes and encoding1 code points
A visible symbol can contain several code points. JS .length counts UTF-16 units; UTF-8 counts bytes.

