Is there really a difference in meaning?
I don't see any real difference in meaning between the two sentences. I know of two actions "it snowed" and "the bus didn't arrive" and I know that the snow caused the bus not to arrive.
Is the second sentence grammatically correct?
Both are grammatically correct. The only difference being that the first uses the "past perfect" to conjugate to snow, the latter uses the "past simple" tense.
Which one is preferable?
Either. Your choice.
The second it seems the two main clauses are unrelated
I disagree because of your use of the word "so". If this was omitted, the sentences could be unrelated. Though of course, due to their proximity, I'd take them to be related anyway.
It snowed in the night [, that's why it's so cold today). The bus didn't arrive, [because the driver slept in!]