A type chart answers exactly one question: what multiplier does this attack type get against that defending type. It says nothing about how three Pokémon with different individual weaknesses can cover for each other as a unit, nothing about which two attacking types together leave almost nothing standing, and nothing about how a dual-typing's weaknesses interact with its own teammates' resistances. Competitive teambuilding lives entirely in that gap between the static grid and the moving parts of an actual six-Pokémon roster.
Offensive Coverage vs. Defensive Synergy
Offensive coverage is about your attacking movepool: does your team, collectively, threaten a super-effective hit against every common defensive typing in the format, so nothing can simply switch in for free? Defensive synergy is the mirror problem on your own side: do your Pokémon's weaknesses overlap, so a single attack type threatens your whole team, or do they cover for each other, so whatever punishes one teammate is resisted or checked by the next. A team can have excellent offensive coverage and terrible defensive synergy at the same time — six Pokémon that between them threaten every type in the game, but that all individually die to Ice-type coverage, lose to any team that packs a single strong Ice-type attacker regardless of how much offensive pressure they generate first.
The Fantasy Core: Steel / Dragon / Fairy
The 'Fantasy Core' pairs a Steel-type, a Dragon-type, and a Fairy-type specifically because each one resists or is immune to the attack type that would otherwise threaten one of the other two. Walk the loop: Dragon-type attacks are resisted by Steel-types (Steel resists Dragon) and are also completely walled defensively by Fairy-types, which are immune to Dragon damage outright — so a Fairy-type on the team makes the Dragon-type teammate's own weakness to other Dragons a non-issue, since the Fairy simply switches in on anything that would hit the Dragon-type hard. Meanwhile, Fairy-types are weak to Steel and Poison; the Steel-type teammate doesn't care about incoming Steel attacks (Steel resists Steel) and can switch into what would threaten the Fairy. And Steel-types are weak to Fire, Fighting, and Ground; the Dragon-type teammate frequently resists or isn't hit hard by at least Fighting-type pressure depending on its secondary typing, closing the loop back around. The practical result: an opposing attacker essentially never gets a free hit on all three Fantasy Core members with a single move type, because whichever one of the three is weak to that type, one of the other two is specifically positioned to switch in and threaten back.
The FGW Core: Fire / Grass / Water
Fire, Grass, and Water form the game's oldest defensive triangle, mirroring the starter-type rock-paper-scissors relationship directly: Water resists Fire, Fire resists (and is only neutrally hit by, while being strong against) Grass, and Grass resists Water. Building a defensive core from these three types means each member has a guaranteed answer already on the team to the type that would otherwise threaten it hardest. A Water-type wall (say, a bulky Water/Ground like Gastrodon) tanks Fire-type attacks aimed at a Grass-type teammate; the Grass-type in turn resists incoming Water aimed at, say, a Fire/Flying attacker; and the Fire-type shrugs off Grass-type coverage moves aimed at the Water-type. Unlike the Fantasy Core, which leans on immunities (Fairy's Dragon immunity) for its strongest links, the FGW Core is built entirely on resistances, which makes it slightly more porous to super-effective coverage from a fourth type (Ground hits Fire hard, Flying hits Grass hard) but still one of the most reliable low-effort defensive back-bones available in any generation, since Fire/Grass/Water-type Pokémon are numerous at every power level of the game.
Offensive Combo: BoltBeam (Electric + Ice)
BoltBeam pairs an Electric-type coverage move (usually Thunderbolt) with an Ice-type coverage move (usually Ice Beam) on a single special attacker, and the combination is prized specifically because their resisted-type lists barely overlap. Electric is resisted by Grass, Electric, and Dragon types, and is flat-out immune against Ground-types; Ice is resisted only by Fire, Water, Ice, and Steel types. Between the two moves, almost nothing in a standard metagame resists both simultaneously — a Ground-type that shrugs off Thunderbolt is generally hit hard by Ice Beam, and a Fire- or Steel-type that resists Ice Beam usually takes neutral or worse from Thunderbolt. This is the classic 'special attacker with two coverage moves that patch each other's blind spots' pattern, and BoltBeam is the oldest, most reliable version of it in the game's history — it's been a viable coverage pairing on special attackers since Gen 1.
Offensive Combo: EdgeQuake (Rock + Ground)
EdgeQuake pairs Stone Edge (or Rock Slide) with Earthquake, and like BoltBeam, the appeal is coverage that barely overlaps in what resists it — between Rock and Ground type moves together, the list of Pokémon that resist both simultaneously is extremely short (a Flying-type immune to Ground still generally takes at minimum neutral damage from Rock, and vice versa for a Water/Ground-type immune to Electric-adjacent Ground resistance patterns that would otherwise dodge Rock). EdgeQuake is the physical-side equivalent of BoltBeam, and it shows up most often on physical wallbreakers like Landorus-Therian or Garchomp, both of which naturally have access to both moves and strong enough Attack stats to make the coverage genuinely threatening rather than just chip damage.
Offensive Combo: Ghost + Fighting
Ghost and Fighting-type coverage together is a newer but increasingly common pairing, valued because Ghost-type attacks are only resisted by Dark-types (and Normal-types are flatly immune to it), while Fighting-type attacks are resisted by Poison, Flying, Psychic, Bug, and Fairy — and critically, Dark-types (Ghost's one resist) are themselves weak to Fighting, while Normal-types (Ghost's immunity) are also hit neutrally-to-hard by Fighting with no resistance. That means a Pokémon carrying both a Ghost-type STAB or coverage move and a Fighting-type one has essentially no defensive typing in the game that comfortably walls both attacks at once, which is exactly why Urshifu's movepool (Wicked Blow plus Close Combat-adjacent Fighting STAB) and other Ghost/Fighting coverage users have become some of the hardest wallbreakers to build a clean defensive answer to in recent VGC formats.
Reading a Core the Way a Teambuilder Does
When evaluating whether three Pokémon form a genuine defensive core rather than just three individually decent picks, the actual test is this: for every type in the game, is there at least one team member that resists or is immune to it, and does that member also not share a critical weakness with whichever teammate that type would otherwise threaten? The Fantasy Core and FGW Core both pass this test cleanly because their members' resistances were selected specifically to answer each other's weaknesses, not just to be individually bulky. That's the actual skill the type chart alone can't teach: it hands you the raw multipliers, but building a core means chaining those multipliers across multiple Pokémon until the team, as a unit, has no single attack type that threatens more than one member at a time.
Why STAB Changes the Math the Chart Doesn't Show
The type chart lists multipliers for a move type against a defending type, but it says nothing about how much raw damage that multiplier is applied to, and Same-Type Attack Bonus quietly changes which resistances actually matter in practice. A 1.5x STAB multiplier stacked on top of a 2x super-effective hit produces 3x total damage, while a resisted 0.5x hit from a non-STAB move might only do a small fraction of a Pokémon's HP even before defensive stats are factored in — meaning a neutral matchup on the chart between a STAB attacker and a resistant defender can still hit harder in real terms than the chart alone suggests. This is part of why competitive players talk about type synergy rather than pure type advantage: the practical damage output depends on which of the attacker's moves get STAB, not just which type multiplier applies.
Immunities Are Structurally Different From Resistances
A resistance (0.5x or 0.25x damage) still lets damage through and still triggers secondary effects like burns, paralysis, or stat drops from the attacking move. An immunity (0x damage) blocks the hit entirely, including any secondary effect that would otherwise apply — a Ground-type immune to Thunder Wave doesn't just resist the paralysis chance, it can't be paralyzed by that move at all. This is why teams deliberately draft immunities rather than settling for resistances wherever possible: a Flying-type or Levitate user isn't just taking less damage from Earthquake, it's taking zero, which means it can safely switch into a Ground-type attacker repeatedly for the entire game rather than slowly getting worn down. When building a defensive core, prioritizing at least one immunity to the format's most common attacking type is usually worth more than three separate resistances spread across different Pokémon, because the immune Pokémon can act as a full-game answer rather than a one-time check.
Reading Dual-Type Interactions the Chart Buries
Dual typing multiplies rather than adds the two individual type multipliers, which produces some of the least intuitive numbers in the game and is exactly the kind of interaction a flat 18x18 grid can't show without a second lookup step. A Flying/Dragon-type like Dragonite takes 4x damage from Ice-type moves, not 2x, because both of its types are independently weak to Ice and the multipliers stack multiplicatively. The same stacking works in the opposite direction for double resistances — a Steel/Fairy-type like Mawile resists Dragon-type moves at 0.25x rather than the 0.5x either type alone would provide, because Steel resists Dragon and Fairy is immune to it, and immunity multiplied by any resistance still rounds to a hard 0x in-game rather than a partial value. Reading a dual-type Pokémon's actual defensive profile means checking both types against every attacking type independently and multiplying the results, not eyeballing the stronger of the two individual matchups.