It’s because of your WHERE clause.
Whenever you specify a value from the right side of a left join in a WHERE clause (which is NOT NULL), you necessarily eliminate all of the NULL values and it essentially becomes an INNER JOIN.
If you write, AND (c.foobar="somethingelse" OR c.foobar IS NULL) that will solve the problem.
You can also move the c.foobar portion into your join predicate, and that too will solve the issue.