Grass/Fire/Water is a perfect trio:
* Grass is SF against and resists Water, is weak to and not very effective against Fire. It also resists itself.
* Fire is SF against and resists Grass, is weak to and not very effective against Water. It also resists itself.
* Water is SF against and resists Fire, is weak to and not very effective against Grass. It also resists itself.
Notes:
* Grass-type Pokemon are immune to Leech Seed, Powder and Spore moves.
* Fire-type Pokemon cannot be burned.
* Water-type Pokemon can, with a few exceptions, learn a wide variety of Ice-type moves.
Fighting/Dark/Psychic is a almost-perfect trio:
* Fighting is SF against and resists Dark, is weak to and not very effective against Psychic. It does not resist itself.
* Dark is SF against and immune to Psychic, is weak to and not very effective against Fighting. It also resists itself.
* Psychic is SF against and resists Fighting, is weak to and does no damage to Dark. It also resists itself.
Cons:
* Fighting does not resist itself.
* Dark is immune to Psychic, a major advantage.
Pro:
* None of these three types have any special interactions with Grass, Fire, or Water.
Fighting/Steel/Fairy is an imperfect trio:
* Fighting is SF against but does not resist Steel, is weak to and not very effective against Fairy. It does not resist itself.
* Steel is SF against and resists Fairy, is weak to but deals normal damage to Fighting. It also resists itself.
* Fairy is SF against and resists Fighting, is weak to and not very effective against Steel. It does not resist itself.
Cons:
* Neither Fairy nor Fighting resist themselves.
* Fighting does not resist Steel.
* Fairy is not very effective against Fire.
* Steel resists Grass, is weak to Fire, and is not very effective against Fire or Water.