They all have distinct usages, but -지만 and -는데 can be used interchangeable in many situations.
* -지만 = used for square logical contradiction like "but" or "however".
* -는데 = oblique contradiction, tension, or parallel situations between two things, like "but', "and", etc.
* -면서 = 1) an action happening while another is going on (while), 2) an existing condition or situation that is viewed negatively for another (even though, when).
1. 이번에 실패했지만 다음에는 성공할 거다 = I failed this time, but I will succeed next time.
2. 몸이 아픈데 회사를 가겠다고 한다 = Fallen ill, he still wants to go to work.
3A. 동생은 컴퓨터 게임을 하면서 즐거워한다 = My brother is delighted playing a computer game.
3B. 그는 돈이 많으면서(도) 검소하게 생활한다 = Even though he is rich, he lives modestly.
In your examples, -지만 and -는데 are both natural and have about the same meaning with slight nuance.
-면서 doesn't sound natural to me.
- ... 다니고 싶어서 지원하지만/지원하는데 시험에서 다 떨어져요. (good - applies but fails the exam)
- ... 다니고 싶어서 지원하면서 시험에서 다 떨어져요 (X). (unnatural - applying and failing are not parallel things that -면서 is used for)