Characters such as spaces, ampersands, question marks and hash symbols carry structural meaning in a URL. Dropping them into a query parameter unescaped will break the link or silently truncate the value. Percent-encoding converts them into a form that travels safely.
An ampersand separates query parameters, so an unencoded one inside a value ends that value and starts a new parameter. Encoding it as %26 keeps it as literal data. The same applies to question marks, hashes, equals signs and plus signs.
Only the individual values. Encoding an entire URL would escape the slashes and colon that give it structure, producing a string no browser can resolve. Encode each parameter value separately, then assemble the URL.
They become %20. You will also see plus signs used for spaces in older form submissions, which is a different convention specific to application/x-www-form-urlencoded bodies rather than URLs generally.
Yes. Text is encoded as UTF-8 first, so accented characters, non-Latin scripts and emoji all encode and decode correctly.