Joining three tables with intermediate nullable option and filter condition
Theoretically this should work according your conditions:

SELECT
    *
FROM
    A
LEFT JOIN
    B
    ON B.id = A.b_id
LEFT JOIN
    C
    ON C.b_id = B.id
WHERE
    (B.id IS NULL) OR (C.active = 1);