All six tanks are effectively on a scale. One extreme end, bdk, takes the most damage, but has the most healing. The other end, warrior, takes the least damage, but has the least healing.
BDK-vdh-paladin-warrior.
Monk and druid are a bit weird, as they both mitigate damage well, but also rely on external healing to a varying degree. Both recieve increased healing, and can increase/decrease that reliance. Effectively, where they sit on the spectrum shifts, above and below paladin, but still between vdh and warrior.
All six tanks are specifically weak to magic and bleed damage. None of them are “good” against either, more a comparison of being less-weak. Against bleed, the “best” is bdk, due to raw healing being the best defense against it, followed typically by vdh.
Against magic, the “best” depends on the situation and the damage profile. Against constant, blockable damage? Paladin. Against unblockable, regular magic? Bdk. Against occasional (25s+) magic damage? Warrior.
The other three tanks are all pretty similar in their vulnerabilities. Monk is not notable the weakest to magic by any means. It’s just equally weak.
VDH is not actually that spikey. Certainly, more so than say, a monk or a warrior, but nothing extreme. It’s healing/damage intake profile is relatively smooth, especially compared to earlier in BFA.
Honestly, the biggest change to this scale of comparison going into Shadowlands is paladin. They exchanged a bit more damage taken, but instead of increased self healing, their damage output is higher. Notably so, they’re relatively weak in terms of damage mitigation+self healing, but doing very, very good for a tank dps.