I don't entirely understand why the imperfective is used here, if it's a single unrepeated action. Could someone explain? Thanks!
Yeah, you're right to expect perfective here, бросить actually is perfective. Imperfective would be бросал.
Yes. When you use the accusative after certain prepositions rather than the prepositional case, it shows direction of movement.
The preposition used here is на (on/upon). When it is used with the accusative, it means "He threw the ball ONTO the roof." The sentence isn't merely saying that he threw the ball AT the roof. I'm not sure but I think you'd use the preposition к for that.
I think at the roof would be Он бросил крыше мяч, following similar examples from the previous skills. Он бросил мне мяч. (Hopefully remembering that correctly...)
I don't think so. Unless maybe if you were expecting the roof to catch it and throw it back. He threw it at the roof, i.e. he threw it straight into the roof, would be "он бросил мяч в крышу", I believe.
К крыше it is. Though much more natural would be to say В сторону крыши