The Dragon type is often considered an ancestral type as many Legendary Dragon-type Pokémon are revered as deities. Other Dragon-type Pokémon are frequently hard to catch and train. They also evolve late and are relatively rare. An interesting fact is that the stats of many Dragon-type Pokémon surpass the stats of other types of Pokémon.
They're weak against themselves because only a dragon could withstand another dragon. It could also be that being a magical creature, they can only be defeated by another magical creature, hence the Dragon and Fairy weaknesses.
They're weak against the Ice type because dragons are reptilian creatures and reptiles are cold blooded (ectothermic), which causes them to become slow and lethargic when faced with cold temperatures.
The Steel type resists them because in legends, knights used armor of that material to defend themselves when facing a dragon.
They're weak against the Fairy type because in certain mythologies, fairies' magic could dominate oriental dragons. While dragons were often immune to magic in European legends, it is a common theme in fairy tales that knights slay the dragon and for dragons to be weak to magic. Additionally, it needed to be easier to catch a Pokémon 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 forces of nature.