i would do specific redirects of the m.example.com hostname to the /mobile/ subdirectory of the canonical hostname and the blog.example.com to the /blog/ subdirectory of the canonical hostname followed by the general hostname canonicalization redirect of example.com to www.example.com
^(?!www\.)(.+) What is this intended to mean? I can get it to have meaning if ?! is changed to either ?: (non-capturing group) or ?< (lookbehind) but can't work out what a lookahead would do in this location. If this is all intended as the ordinary with/without redirect, that's !^(www\.example\.com)?$
<IfModule mod_rewrite.c> Get rid of the IfModule envelope. Not its contents, just the envelope itself. There is nothing in this WordPress rewrite addressing either hostname (m.example.com) or subdirectory (example.com/m/).
This .htacces is inside site.com/blog
Do you mean that you have two separate htaccess files, both containing RewriteRules? Recipe for disaster. Collect all your RewriteRules in a single htaccess file.