Rather than give you the correct technical answer (edit: okay I ended up going into some technical details, oops), which has been provided, I think I'll try and diagnose where you're intuitions have led you astray.
It seems to me that you think that if a formal system can derive (P & ¬P), then we have to accept it and thus accept the resulting explosion. If I'm right, what you're doing is assuming that whenever we write a logical statement, we're endorsing it. But we're not, we're reasoning meta-logically. That is, to write "S ⊢ Q" is to say " suppose S ⊢ Q is a true statement in the logical system" not asserting it as true, and then trying to make it false later having already said it's true. If we were doing the latter, then yes, we'd have to accept the consequence of every logical statement we write.
But we don't have to, once we get the contradiction, accept the contradiction's truth. Instead, we can (actually, we have to) accept that whatever we used to prove the contradiction can't be true (nor derivable). What we've done is shown that some part of the set of statements IS NOT derivable because we assumed it was derivable and got contradiction. That is, what we've got is the following inference from our exercise:
Let S be a finite set of statements and Q be what we've derived from S. The question is, is S itself and instance of "⊢ S" or not? Suppose S ⊢ Q. But then suppose Q ⊢ (P & ¬P). You think that now we've got (P & ¬P), and given (P & ¬P) ⊢ A ( where A = any statement and its negation), we've now exploded the logic. But on the contrary, because assuming that "⊢ S" leads to S ⊢ (P & ¬P), we know that the assumption "⊢ S" must have been false. And because it's false, we know that the explosion "⊢ A" is also false. To accept (P & ¬P) as true would lead to explosion. But instead we've reasoned that, axiomatically, ⊢ ¬(P & ¬P), therefore anything deriving (P & ¬P) can't be derivable. Then we've shown that, were S derivable, (P & ¬P) would also be derivable. But this contradicts our axiom that ⊢ ¬(P & ¬P). From this it follows that S was never derivable in the first place. But if S is not derivable, then nor is anything of the form S ⊢ Q (Q standing for anything derived from S). But S ⊢ A is an instance of S ⊢ Q. So A is not derivable from S.
For the sake of completeness (in the non technical sense), lets also note that for every possible set of statements, if that set of statements derives A (still symbolising every possible statement, ie: explosion), the same proof above applies. Therefore, there is no possible set of statements that derive A. So not only do we know that a given set of statements S doesn't derive A, but that no set of statements derive A. Therefore "⊢ A" is ALWAYS false, and as such, this proves that explosion is impossible for our logical system. Isn't that a satisfying result we've now got ourselves to put our minds at rest?
When we write "⊢ S" in this (ludicrously informal) proof, we're not committed to it, nor any of its consequences. We just write it down as if it were the case, and as soon as we derive something impossible within the axiom schema and rules of inference our system is using from pretending its true, then we have a direct way of knowing it's false.
I hope I haven't left you in even more confusion.