This has nothing to do with HFS, APFS or macOS Mojave really. It is simply the way URLs in any browser work.
URLs can have an optional query component that is marked by a single question mark (?) character. What comes after the question mark is the query part of the URL.
As your file name is not the query, but rather the actual name of the file - the question mark in the file name needs to be "escaped" (i.e. translated) so as to convey the full name without the browser thinking this is the query component of the URL.
Escapes in URLs start with a percent sign (%) and then the hex-codes character code for the character to escape - in this case 3F which is the question mark character. This is also known as "percent encoding".
The reason this is called "escaping" is that you're "breaking out" of the normal meaning that the characters following the escape character (%) would otherwise have had. In this case your file name does not contain the letters 3 or F, they have a different meaning because of the escape character %. RFCs 1738 and 2396 (URL "standards") explicitly call this escaping, whereas the newer RFC 3986 uses the term "percent encoding" in order to distinguish this particular form of escaping from others.
As for the backslash character, it has no special meaning in an URL today - so it is just treated like any other character. On macOS it also doesn't have a special meaning (whereas the forward slash is used as a directory seperator in some cases).
Note that pre-2005, it was recommended that the backslash character is escaped in URLs, but that is not necessary anymore. You might see some (older) software do just that with URLs. The escaped and non-escaped version has the same meaning, so it doesn't make any practical difference.