Someone put up an awesome article on the Battle.net forums laying out the effectiveness of upgrades in various matchups: ZvT, TvT, PvT, PvP, PvZ, PvP Some of the results are astonishing. There are definitely some upgrades you can't live without, and conversely some upgrades you can simply overlook. For instance, it's always more effective to go with Terran Infantry Armor upgrades first rather than Weapons. It's also essential to get Vehicle Weapons Upgrades for Terran in TvT matchups. Check out the article for the full listing of upgrades and benefits. Source: Activillain (Battle.net Forums)
I gave some examples on upgrades on some post but it was slightly off-topic there I guess, but yeah the math of it is quite simplistic and even a 1 point of damage difference or armor does make a big difference
It always depends on what your units are and what units the enemy is basicly going for and not all upgrades are required, there are break-points like the link in the OP says. The example with zealots(lvl 1 weapons makes zealots kill lings in 2 hits instead of 3 thus leading to a 50% effective increase in damage against them, or 33% reduced time to kill while another +1 will counter both lvl 2 and 3 upgrades for ling armor staying at 2 hits per kill, means that if you're going zealots and the enemy lings you don't need to get lvl 3 weapons, just focus on armor{as every lvl there counts even harder against fast-and-soft hitting enemies}) Generally against fast-and-soft hitting enemies armor is king, against hard-and-slow hitting enemies go for weapons to kill them fast, armor won't save you. Even at the second case though there are break points(in the linked post I think there was a major example of siege tanks killing a certain unit with 2shots where 1 lvl on armor increases their survivability{agaisnt siege tanks which is a major killer!} by 50%{to 3 hits, that is}) A couple of general points I'd like to add: Terran bio-balls: if you're going for a bio-ball coupled by medvacs then armor boni scale better than weapons because those shots that the armor will prevent will with the help of vacs increase your units lifespan enough to fire a few more shots or even survive{if vacs heal a points per sec and target unit takes a+1 points of damage per hit with 1 sec attack speed{cooldown} then with a +1 armor it will become unkillable in that scenario whereas elsewhere it'd take as many seconds to kill as it's total life. That's the most extreme example of course, cause on the other hand an attack that would kill a unit straight with 5 points overkill won't mean that any armor upgrade will save them. Healing+high armor is especially effective in general Edit: Obviously if you only use bio to man bunkers, weapons is the way to go for EB upgrades. Zerg: Their ability to regenerate(esp on roaches) also gives a little extra value to armor. Also the fact that it takes 2 upgrades for ground units attack vs 1 for universal ground armor. If your army has lots of roaches, then consider burrow+armor upgrades as you'll have plenty of time before a roach gets low with the armor bonus and then burrow and reposition for quick regen and attack. Lings on the other hand, while they also benefit a lot from armor, their fast attack in combination with dmg upgrades makes them ultra effecient damage dealers when in numbers{I've seen IdrA surround a nexus and destroy it at such insane speed it was unbelievable. Upgraded lings+good micro are killers Protoss: Most toss units have more armor than shields so armor is better for them, generally. But if you're microing your army a lot and are able to distribute the damage among units relatively evenly, shields will be able to recharge and you'll get to use them again whereas armor is unhealable(in contrast to terran), plus shields apply to buildings too, so if you can make good use of them{like good blinking away from hard with stalkers etc} shields are a better upgrade. Though all of these are to be followed after break points. If you notice specific break points you wanna hit, aim for them first{like the zealot vs ling weapons upgrade etc}, but if in doubt the above could help a bit I think.
So the moral of the story for zerg is that armor before attack upgrades in most situations. And here I always preferred to get +1 range attack before carapace.
Not always, only when in doubt armor is generally a little more of a reliability when in doubt. But for example for PvZ your first upgrade should usually be weapons, because both zealots and colossi kill lings with 2(for lots) 1(for colossi) hits instead of 3 for lots and 2 for colos. So with 1 upgrade on weapons, whenever there are zerglings in the mix of the enemy ground forces, those attacks you'll save from hitting a badly injured ling are used against other forces instead so in effect you don't only gain a point of damage per hit but you actually get more hits per unit out before it dies, turning the balance a big way to your favour(if a zergling's left with 1-2 hp and you have to unload 20 dmg on it 18 damage gets wasted, while if you had +1 weapons(2 bonus damage on both lots and colossi) you'd save 1 whole shot and get to do 20 points of damage to the next unit. The next upgrade though will only make a marginal difference as both hits will lead to an overkill against that zergling and you only gain 2 points of damage on the next unit which if it happens to be a zergling it's as if you gain 0 bonus(it'll die in 2 hits again) To make it a little more clear as my wall-of-text is a little mess: A zealot does 2 hits with 8 dmg per hit for a total of 16 damage when at 0lvl weapons and 1.2 speed. A zergling has 35 hp and regens 1 hp every ~3.7 seconds. It will take the zealot 3 hits to kill the zergling. With a +1 on weapons the lot will do 18 dmg per hit killing the ling and overkilling it by 1 damage. So lvl 1 weapons will increase the zealot effectiveness against zerglings by 50%(you save 1 attack out of 3 which equals to 50% increased damage) If the zealot has +3 weapons he'll do 22 damage per hit killing the zergling again in 2 hits. So it's just the same effect as with +1 weapons. Those 2 further upgrades gave the zealot 0% effective increase in dmg. If the zergling gets an armor upgrade we're back to equal footing. If the zergling is ahead of the zealot on armor upgrades than the zealot is on damage, then the next break-point will be at ling with 3 armor and lot with 0 weapons taking the zealot 4 hits instead of 3 to kill the ling. So when having an army of zealots against an army of zerglings the safest way is to upgrade weapons to lvl 1 and leave them at that. If you go to lvl 2 then your enemy can go lvl 2 carapace and counter your upgrades and lvl 1 weapons vs lvl 3 carapace is the same as lvl 1 weapons vs lvl 1 carapace so if he techs up it's his cost. It will take a 0/0 zergling 38 hits to kill a 0/0/0 zealot, and it scales up to 150 hits for a 0/0 ling to kill a 0/3/3 zealot(yeah, so many!). It takes a 3/0 ling 22 hits to kill a zealot. So each lvl of the difference of the enemy weapons vs your armor gives you a significant lifespan boost in this case, allowing you more hits (almost 4 times more hits in the 3 lvl difference{and up to 7 times more hits compared to what your enemy could have done if he upgraded}. That means that your zealot will live up to 4 times longer dealing up to 4 times more hits. So in this Zealot VS Zergling case the most efficient thing to do is take the weapons upgrade first and then go all out on the armor upgrades, starting with the normal armor and then doing the shields when they become cheaper than the higher lvl armor. If you're on the zergling side, then the most efficient is to start with +1 armor to counter a possible +1 weapons advantage, and then go all-out on weapons unless you see a +2 weapons where you reply with another +1 armor. Against siege tanks for example it's a completely different story. Where the 1 point of armor gives you a 25% damage reductioin against lvl 0 zerglings(1 natural armor leads them to 4 dmg/hit so with +1/+1 shields/armor you take 3 dmg/hit or 25% less than before) it gives you ~2.1% dmg reduction against siege tanks which do 49dmg per hit(-1 from natural 1 armor) reducing it to 48. When attacking siege tanks with the zealots you need 12 hits per tank. With +1 weapons that drops to 10 hits per kill, with +2 to 9 and +3 to 8. Every lvl in tank armor gets you 1 step behind. Tanks will kill your zealots in 4 hits when they're at 0 weapons and 3 hits at each point above unaffected by your lvl on armor/shields(as it's 5 dmg/hit/upgrade and your armor totals 3 extra points at max lvl not even accounting for the first upgrade of the tank damage. This will change on next patch). So when pushing chargelots against a tank wall weapon upgrades are the way to go as they will increase your effective damage by ~17%/10%/12%(yes the lvl 2 upgrade is the worst, lol, as it takes only 1 hit off the 10 while the 3rd takes 1 hit of the remaining 9 which is more effective) When facing zealots playing the siege tank side your best option is to go lvl 1 weapons at first to reduce the hits required to kill zealots by 1(and increase your effective damage by ~33%) and then all the way armor to counter possible zealot upgrades. That have been 2 extreme examples though. In action it's much more complicated as army compositions are never 1 type of unit each. But you know, you keep in mind which of your units counter which and what hit breaks you wanna achieve and after those are achieved armor is the safest way to go if in doubt. Especially if playing zerg or terran(the fact that protoss have 2 different armor upgrades against their 1 weapon makes their plasma shields more efficient all-round, specialized armor more efficient when playing offensive and not using both ground and air, or lots of high shield units{archons} and thus weapons comparably more efficient cost-wise. Knowing such specific limits helps, other than that, experience makes you more comfortable with them than any theorycrafting ever will Disclaimer: I don't follow my own advice. I'm a poor player