Here you are comparing two date and the comparison returns true/false or 0/1 thats why you are getting 0/1.
your query should be like...
select advocate_name , gov_advocate_id , p.case_no,
(SELECT COUNT(ID) FROM YOUR_TABLE WHERE (CAST(next_hearing_date AS DATE)) <= (CURDATE())) as attended,
(SELECT COUNT(ID) FROM YOUR_TABLE WHERE (CAST(next_hearing_date AS DATE)) > (CURDATE())) as scheduled
from case_record as c
inner join gov_advocate as g
on c.gov_advocate_id = g.advocate_id
right outer join proceeding as p
on p.case_no= c.case_no
where c.gov_advocate_id = 1
order by case_no;