COUNT number of column values with INNER JOIN
Will it work for you ? 

SELECT a.id as question_id, a.costperlead, a.costperlead *(b.numYes+b.numPossible) as revenue,
b.numYes,b.numNo,b.numPossible
FROM questions a
LEFT JOIN 
(
SELECT a.question_id, 
count(case when a.response='Yes' then 1 end)AS numYes,
count(case when a.response='No' then 1 end) AS numNo,
count(case when a.response = 'Possibly' then 1 end) numPossible
FROM responses a 
GROUP BY a.question_id
)b ON b.question_id = a.id;


(http://sqlfiddle.com/#!15/6ce465/46) 

Note: questions without responses will be also included in resultset. If it's not needed , replace LEFT JOIN with INNER JOIN.