1. URLs are used on the web. Files are used inside the server. URLs and files are not at all the same thing. Your rewrite configuration links a URL request to an internal file found inside the server to deliver the content. Your redirect configuration tells anything externally requesting a particular URL to instead make a new request for a different URL. Redirects and rewrites have different effects. A redirect maps a URL to a URL. A rewrite maps a URL to a file.
2. This is often adequate:
$this->productSlug = preg_replace('/[^a-z0-9]+$/', '', (preg_replace('/[^a-z0-9-]+/', '-', (preg_replace('/[\']+/', '', (preg_replace('/\ ?&\ ?/', '-', strtolower($id['name']))))))));
but you seem to have a bit more of a challenge than most. Brackets and micro would have to be % encoded to be valid in a URL, so simply change brackets to hyphens and change micro to lower case u.