Not Equal Operation is not working
Your second query will give you all companies that have (one or more) campaign centers with id different than 'Demo'. But those that have a 'Demo' and some other campaign id will still be included.

I guess that you want something different. To find those companies that none of their campaign_id is 'Demo'. If so, you need an anti-semijoin (often called anti-join) which can be accomplished with either NOT IN or a LEFT JOIN / IS NULL or a NOT EXISTS query:

SELECT c.id, c.company_name 
FROM center AS c
WHERE NOT EXISTS
      ( SELECT 1
        FROM campaign_center AS cc 
        WHERE c.id = cc.center_id 
          AND cc.campaign_id = 'Demo'
      ) ;