I think you can get it by using jsonb_array_elements function and the ->> operator.
create table test (facility int, data jsonb);
insert into test values
(1, '[{ "id" : "1", "count" : "4", "severity" : "bad" }, { "id" : "3", "count": "4", "severity" : "good"}]'),
(2, '[{ "id" : "2", "count" : "4", "severity" : "good" }, { "id" : "3", "count": "4", "severity" : "good"}]'),
(3, '[{ "id" : "3", "count" : "4", "severity" : "good" }, { "id" : "3", "count": "4", "severity" : "bad"}]');
SELECT t1.facility, obj->>'severity' severity
FROM (SELECT facility, jsonb_array_elements(data) obj
FROM test) t1
WHERE obj->>'severity' = 'bad'
facility | severity
-------: | :-------
1 | bad
3 | bad
dbfiddle here
In case there is more than one "severity" : "bad"
for the same facility you could avoid duplicates using DISTINCT.
create table test (facility int, data jsonb);
insert into test values
(1, '[{ "id" : "1", "count" : "4", "severity" : "bad" }, { "id" : "3", "count": "4", "severity" : "good"}]'),
(2, '[{ "id" : "2", "count" : "4", "severity" : "good" }, { "id" : "3", "count": "4", "severity" : "good"}]'),
(3, '[{ "id" : "3", "count" : "4", "severity" : "bad" }, { "id" : "3", "count": "4", "severity" : "bad"}]');
SELECT distinct t1.facility, obj->>'severity' severity
FROM (SELECT facility, jsonb_array_elements(data) obj
FROM test) t1
WHERE obj->>'severity' = 'bad'
ORDER BY t1.facility
facility | severity
-------: | :-------
1 | bad
3 | bad
dbfiddle here