I'm not quite sure that I understand what you need here, but
/\("\([^"]*'[^"]*\)\)\@<!\("\([^"^']*\)"\)
matches all lines from your example that are in double quotes, but not those that contain single quotes.
"cat" is called "foo" => "cat", "foo" highlighted
"cat's" name is "foo" => "foo" highlighted
x="cat food" => nothing highlighted
x = "cat" => "cat" highlighted
[ : vim ]
\@<!, vim-regex (. vim ). , .
, . , , , .