I would say -ㄴ가요 and -나요 have the same meaning and function (any difference is too subtle to mention), but there are certain contexts where one fits better than the other.
-나요 seems to work with verbs better (i.e. sounds clearer and smoother, often with fewer syllables), for example, while -ㄴ가요 works well with adjectives.
e.g.
* (Verb) "그 사람들(은) 갔나요?" 갔는가요? is longer and slightly clunky.
* (V) "아버지는 언제 돌아오시나요?" Again, 돌아오시는가요? is longer.
* (Adjective) 춘천은 서울에서 얼마나 먼가요 / 머나요? Both are fine, but I would prefer 먼가요.
* (A) 제주도는 어떤 곳인가요? Again, probably better than 곳이나요?.
-ㄴ 건가요 is -ㄴ 것이다 connected with the -ㄴ가요? (-ㄴ 것인가요? shortens to -ㄴ 건가요?).
So the difference between -ㄴ가요 and -ㄴ 건가요 is that between the direct statement X-이다 and the indirect statement X-인 것이다.
-나요 can also connect to -ㄴ 것이다 to form -ㄴ 거나요? (-ㄴ 것이나요 contracts to -ㄴ 거나요?), but 거나요 sounds to me not as natural as -ㄴ 건가요. Since 이다 in 것이다 is like an adjective, this agrees with -ㄴ가요 working well with adjectives.
* 이렇게 하면 되나요? => better than 되는가요?
* 이렇게 하면 되는 건가요? => better than 되는 거나요?