No, because template parameters are in a different namespace from page names. We (hopefully) ban '=' in template parameters already.
No, we don't, they just only work if the param has a name, as I said. If the param isn't named, you have to put '1=' or whatever at the beginning. I imagine '=' is banned in param names, if that's what you meant.
The problem with page names including :: is much more serious issue. You can't introduce a new special character without having some way to escape it.
In practice, we tend to not bother with escaping, and just ban the special character outright instead. That's moderately acceptable for small numbers of characters, but we should reuse those banned characters as much as possible for new syntactic constructs, if we really need to make new ones.
For existing special characters, banning them is fine, but we can't ban new special characters without breaking any page that already uses them. Reusing existing banned characters is the best option, but it's not easy to find one, '|' won't work in this case because it will be assumed to be given display text for the link, rather than being part of the url. What other banned characters are available?