Ideally you would use a separate table movie_type with one row per type per movie. Otherwise, you need to use substring_index to pick out each type and join to an ad hoc table (or a recursive cte) identifying which type to get from each row:
select type, count(*) from (
select substring_index(substring_index(type, ', ', num),', ',-1) type
from movie
join (
select 1 num union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9
) nums on num <= (length(type)-length(replace(type,', ','')))/length(', ')+1
) movie_types
group by type;
(length(foo)-length(replace(foo,'bar','')))/length('bar')
is the count of how many times 'bar' appears in foo. You add one to the count of ', ' in type to get how many types are listed.
fiddle