Most of these are written from the "attacking" side.
Normal
Too weak to break through Rock and Steel.
Ghosts are incorporeal.
Fire
Fire burns Grass, melts Steel and Ice.
Rock requires too high a temperature to burn, (but could still happen, as represented by the low Sp Def in general across all rock types).
Dragons are superior to the normal elements found in nature (except see Ice).
Fire pokemon are plenty used to being on fire.
Water
Water extinguishes Fire.
Rocks sink in water.
Water quickly erodes loose gravel.
Water is already wet.
Roots (Grass types) are stronger than all but the strongest water currents.
Dragons are superior to normal elements found in nature (except see Ice).
Electric
Ignoring the science behind water actually being a conductor or not, the moisture on/in a Water pokemon’s body certainly doesn’t help it resist the currents.
Electric pokemon are plenty used to shock and jolts.
Ground and Grass are grounded well against electricity, Flying is not.
Dragons are superior to normal elements in nature (except see Ice).
Grass
Leaves and roots are ineffective at putting out fires.
Plants soak up and feed off of Water.
Plants are usually not effective against clearing out other plants, unless they have a special advantage like size, or are a parasite.
Roots break through Rock and Ground with easy, albeit gradually.
Bugs and some birds are herbivores, and Poison is dangerous to a plant (think weed killer), so Grass types have to take care when attacking these types, losing their effectiveness.
Steel types are both harder than rocks and have sharp scales/hides. Both are effective against keeping out unwanted roots/vines.
Dragons are superior to the normal elements found in nature (except see Ice).
Ice
Fire types heat themselves naturally faster than ice can cool them off directly.
Water types require much more ice than normal before feeling any change to their body temperature.
Grass and birds (Flying) are poorly defended against cold, and most don’t thrive in cold conditions.
Ice types are used to cold temperatures already.
Ice penetrates and freezes the moisture in Ground types, which is not something a living being would particularly enjoy.
Dragons are reptilian, and are not fit for cold environments in general. Alternatively, they, as the legendary creatures of mythology they represent, abhor being trapped/sealed (a common theme in stories with dragons), which Ice is quite good at doing.
Fighting
Someone trained in martial arts usually has no trouble fighting Normal types who aren’t trained.
Smashing Rocks and Ice are a test of strength.
Bending Steel girders is a classic cartoon-y way to show strength.
Psychics outsmart them, so their effectiveness is decreased. The only reason it isn't a full-blown immunity is because Psychic types are not usually physically strong.
Poison types use dirty and underhanded tactics which make them tough to fight honorably.
Fighting types can ignore the fear of the Dark (types), and enjoy beating up bullies.
It’s difficulty to fight something effectively if you can’t even reach it, like if it’s Flying or incorporeal like Ghosts.
Bugs are resilient and don’t move as expected, making it tough to find openings in their defenses (and shells).
Poison
Plants are susceptible to pollution (Yes, Pokemon is just a PSA to recycle).
Poison types already have poison in their bodies AND are wise to all other poison types’ tricks.
Rock and Ground are both well defended from underhanded tactics AND act as decent mediums in filtration systems for toxins.
Ghosts are incorporeal so poison itself doesn’t work well, but they still fall for underhanded tricks, resulting in poor effectiveness rather than immunity.
Steel types are completely protected against both Poison in their perfectly constructed bodies, but also have few to no weaknesses for a roundabout style of attack to exploit.
Ground
Dirt is effective at extinguishing fire.
Electric, Rock, and Steel types need foundation, which ground types are best at disheveling.
Bugs and Grass types are adaptive, and are usually too well embedded in dirt to care about small shifts, or too good at digging.
Ground is an effective filter for toxins (Poison).
Flying types can simply... fly.
Flying
It’s difficult to attack Electric types without getting shocked yourself if you’re not grounded, so effectiveness is decreased.
Grass and Bugs are commonly preyed on by birds. This not only represents a fear of being eaten, but also a natural predisposition to fighting them.
Fighting types can’t defend against every single angle that Flying types can attack from.
Flying type attacks rely on quick strikes, from which Rock and Steel are well defended.
Psychic
Psychic types can outwit both Fighting and Poison (remember, poison uses
sneaky, underhanded tactics).
But they cannot outwit other Psychics.
Dark types are conniving and so withdrawn from conventional thought that they are impossible to read or attack.
Even the best Psychics have to put a lot of effort into bending just a spoon with their minds, so an entire Steel pokemon is out of the question. Also, tin foil hats.
Bug
Bugs are not well protected against extreme heat or poison, so attacking fire and poison types requires more care than normal, so effectiveness is decreased.
Many Bugs are nocturnal herbivores, so Grass and Dark types are a pleasure to fight.
Fighting and Steel are good at defending themselves against the predictable
attacks of Bug types. (This is not contradictory to the Fighting type entry, as defending yourself from an unconventional foe is easier than breaking through his defenses).
Flying types are difficult to fight effectively when you can’t even reach them.
Psychic types are freaked out by bugs and thusly can’t concentrate, making them an easy fight.
Ghosts are incorporeal, but bugs are simple minded, so they try anyway. This results in poor effectiveness rather than invulnerability.
Rock
Rocks, like dirt, are pretty good at extinguishing fires, rather than fueling them.
Rocks are solid, Ice is crystalline. The result is a smashing success.
Bugs and birds (Flying) are frail and subject to squishing and squashing. Rocks are also easier to make airborne than martial artists.
Steel types are resistant against the imprecise bludgeoning of rocks.
Fighting types can just punch the rock, reducing it to pebbles, reducing its effectiveness.
Ghost
Normal pokemon can’t see ghosts, and pay them no mind, as opposed to Psychic types, who are hyper-aware of their presence, and can’t concentrate, making it an easy fight.
Steel types are simply too well defended to fall for a Ghost types’ tricks.
Dark types live and feed off fear, and are neither fooled nor amused by a Ghost type, reducing effectiveness.
Dragon
Steel types are well defended against almost every type of attack, including the straight-forward brute force of dragons.
Dragons are beings of legendary power, so the only thing that can come close to their level is another dragon.
Dark
Fighting types are resistant to the fear which Dark relies on for an effective attack.
Psychic types are especially vulnerable to said fear.
Ghosts exist in this world as shadows, which are destroyed by and cannot exist in true darkness.
Dark types live and breathe fear, so it’s difficult to scare them.
Steel types may be scared shitless, but their super-tough skin and scales still protect them from any underhanded attack Dark types cook up.
Steel
Attacking a Fire type runs the risk of melting, or at least a weakening of a Steel types’ tough hide, so effectiveness is decreased.
Water A: attacking a water type runs risk of rust, so effectiveness is decreased.
Water B: water is well protected against both bludgeoning and slashing, which is all steel has up its shiny sleeve.
Electric types can repel metals by generating a strong enough magnetic field with their body, reducing effectiveness.
As stated in the Rock description, Ice is crystalline, and poor defense against the blunt smash of a Steel attack.