There isn’t much room in standard ASCII for lots of symbols. In fact there are only 95 slots assigned for printable characters. A pretty detailed history of ASCII, almost character by character, can be found here.
So instead of separate left and right quote marks, we got a generic “left double quote / right double quote / inches / kind-of-umlaut” symbol that serves all these purposes equally well, and equally poorly. The code for this generic symbol is 34.
The next character code standard that was widely adopted — at least in the West — was ISO Latin-1. It’s reign was short-lived, but it is an 8-bit standard as opposed to ASCII’s 7 bits, and therefore had an additional 128 codes to represent characters. Nevertheless, proper double quotes (or single quotes for that matter) were not among the characters represented in the extended range.
However, Microsoft then defined their own superset of ISO Latin-1 — which standard is often called Windows Latin 1 or some such — taking advantage of the fact that Latin-1 had reserved codes 128 through 159 for duplicates of the ASCII control characters in the range 0-31. Microsoft chose to use this range for additional printable characters instead, among them curly quotes of all types. The curly double quotes are at codes 147 and 148.
Meanwhile, or several years earlier actually, the Mac had already issued its own 8-bit character standard, now commonly called MacRoman. It defines curly double quotes at codes 208 and 209.
Nowadays we have Unicode available on most machines, a standard that defines almost every character that mankind ever blemished a piece of paper with. Or, at least it pretty well nails down everything used in the world’s alphabetic languages. The curly quotes are in there somewhere, though I’m too lazy to look up the numbers just now. It shouldn’t surprise you that the curly quotes are encoded by yet another pair of numbers, different from all those above.
Now combine all this history with the fact that computer text often does not specify a character encoding — because the software producing it or transmitting it assumes the whole world goes by Windows Latin-1, for example — and the fact that the displaying software might make similar parochial assumptions, or might not recognize the encoding specification even if it’s present, and you can understand where the chaos comes from. Both the producer and consumer of the text need to agree on the character encoding used, otherwise you’ll see what look like bizarre typographic errors. This is a very general problem of course. It doesn’t just affect the display of curly double quotes.
Unicode hasn’t conquered the world quite yet. There are still several popular but mutually incompatible character encodings in use, many legacy files and documents, and many software titles that weren’t written with different standards in mind. And I couldn’t tell you how long it will take for all this to shake out.