I think the best way to translate the difference into English is to think of weil as "since" or "because", and denn as "for" in it's somewhat dated meaning as a conjunction. The difference in English is that you can start a sentence with a "since" or "because" clause, but you can't start a sentence with a "for" clause. For example:
I'm lonesome because my gal has gone away.
Because my gal has gone away, I'm lonesome.
I'm lonesome, for my gal has gone away.
are all possilbe. But:
For my gal has gone away, I'm lonesome. (?)
is ungrammatical. (I'm trying to use an old-timey register here because "for" isn't used much in this way in modern times.)
In German, the same difference exists between coordinate clauses and subordinate clauses; a clause with a subordinating conjunction (wiel, falls, obwohl, etc.) can come before the main clause, but a clause with a coordinating conjunction (und, oder, denn), must come after the main clause. In German however, there is an additional requirement that the word order for subordinate clauses be changed to put the verb last, while in English the word order stays the same. The difference between a subordinating and coordinating clause has nothing to do with meaning really, which is why you see conjunctions with same meaning in both types; it's more to do with the syntax that's used. (Note, I'm not implying that a sentence can't start with a coordinating conjunction, since they often do in both English and German, but this only happens when the sentence in question is continuing the line of thought from a previous sentence. You can't start a sentence with a coordinating conjunction to join a subclause with the main clause, so "And I went to bed, I was tired," is ungrammatical.)