A rule of thumb is that if you are concatenting user input strings into your SQL query strings you are doing it wrong.
SQL Injection vulnerabilities happen when inputs influence the parsing of the query. You can't do that when the database already has an AST for the query.
Parameterized queries are not just a different kind of quoting.
b) I'm guessing there are plenty of databases that execute parametrized queries entirely differently than a plaintext ones, including the absence of an escaping step. Since the whole point of quoting + escaping is to demarcate the "data" parts of a query, and you've already done that with parameters, there's no reason a query engine can't use the parameter directly rather than run it through a useless escape then parse-and-unescape cycle.
(There's almost never a good reason to construct SQL on the fly.)