Translation:I have needed to go to the hospital for a long time.
It's an accusative case. «В» + accusative expresses the final point of movement.
To be would be «Мне давно́ на́до быть в больни́це», and you cannot drop «быть» in such case.
this construction does not work in english, I have needed to go, just don't work. normal people would use "I should have been to the hospital a long time ago" or "my visit to the hospital is long overdue", but the phrase you are using is grammatically wrong, the other option is "I have been needing", but again, no one would use it.
"Мне надо в больницу надолго", or "мне надо надолго в больницу". The key word is "надолго" wich means "for a long time", while "давно" means (depending on context) either "long time ago" or "since long time ago 'till now" and the latter meaning is used in the Duo's sentence (English renders this meaning through using Present Perfect)
Yes, «Я давно делаю упражнения» is OK.
Although «делаю упражнения» is not something I’d say: I’d specify what kind of exercises you do, e.g. «я давно делаю заря́дку» ‘I’ve been doing morning exercises for a long time’ or «я давно́ де́лаю упражне́ния из э́той кни́ги» ‘I’ve been doing exercises from this book for a long time’. Without some context, just «упражне́ния» sounds strange because there are a lot of completely unrelated activities described by this word (e.g. physical exercises and language exercises have little in common).