Personally change it from this ~
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example.com
$ [NC]
RewriteRule ^(.*)$ http://example.com/$1
[L,R=301]
To this ~
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301, L]
But what this says is
if it is not your-site.com
redirect it to using a 301 redirect, which is a permanent, redirect to example.com/.
Yes upload it to your root (public_html) directory.
To make sure it is compatible with wordpress from what I gathered just reading that post, set your redirect up to match where you have designated your wordpress blog.
So if you tell wordpress to be under the www. version make sure the 301 redirect is set up to match the www. url.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^
www.example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301, L]
Does that make sense?
Right now for that tag, now that tag IMO should only be used on similar pages, articles under different categories that sort of thing. You would run into issues if you tried to set 2 up as far as I know probably not best practise. That would also be required on every page which increases code bloat, lowers page performance, and TBH probably wouldn't be the best for incoming links.
Setting up a 301 helps, eventually, to consolidate all your equity which is the best thing about doing it.
Set the 301 up in the .htaccess and then if you have similar pages under different url's then use the link tag with the canonical attribute.
That way you are using both as they should be used IMO.