The Dragon type is an ancestral type, as many of the Legendary Dragon-type Pokémon are considered as deities. Other Dragon-type Pokémon are hard to catch and hard to train. They also evolve late, and are relatively rare. An interesting fact is how many Dragon-type Pokémon surpass common stats.
They're weak against themselves because any other force of nature could outstand a dragon, except for another dragon.
They're weak against the Ice type because dragons are similar to reptiles, and reptiles are cold blooded, which causes them to be weak against cold temperatures.
The Steel type resists them because in legends, knights used armors of that material to defend themselves when they were to face a dragon.
They're weak against the Fairy type because in mythology, fairies' magic could dominate oriental dragons, even though in European legends, the dragons were immune to magic. Plus, it needed to be easier to catch a Pokemon that could have Super-Effective attacks.
They're resistant to the Grass, Fire, Water and Electric types because in old legends, dragons were immune to the nature forces.