Youd have to pay close attention to every mod you want to update and what its compatible with until Mojang stops being sado masochist with its mod community and we can start tossing mods in from several versions back and not have massive retarded issues. SAFE WORD SAFE WORD
Well to be fair, Mojang is behind a rock and a hard place with Minecraft updates. The game was never originally meant to be used as a modding platform, but everyone built on it anyways. To shape it into a stable platform, underlying infrastructural changes have to be made, but these destabilize mods relying on internal implementation details (= all mods, since there is no well-defined interface for mods to hook into. The closest we have is Bukkit, but it is also unofficial, relies on patching Mojang code, and only supports the server-side. Forge supports both, but without the layer of insulation between interface/implementation as in Bukkit/CraftBukkit).
But some of these recent changes have me scratching your head, specifically the protocol and obfuscation incompatibilities introduced in 1.5.2. The 1.4.7/6 update did not have these incompatibilities, so why does 1.5.2/1? In reviewing the decompiled code, I couldn't find any obvious reason why they would choose to break compatibility. Asked around, found no answers. My guess is the reason somehow relates to Minecraft Realms, but it isn't clear.
However this incompatibility was becoming to be more and more of a problem for a project I was working on. We had a version for 1.5.1, working fairly well, but then once 1.5.2 dropped the question was forced: should we update to 1.5.2 and discontinue 1.5.1? Not update to 1.5.2 at all, stick on 1.5.1 until 1.6? Or branch to support 1.5.2 and 1.5.1? The project in question is the MCPC+ server implementation, and we actually still support 1.4.7 (especially for all you FTB folks) – supporting two branches 1.4/1.5 is difficult enough given our limited resources; adding a third branch, supporting 1.4.7/1.5.2/1.5.1 in separate codebases, coordinating changes between all the three branches, would be even more difficult and takeaway from real, much-needed bugfixing/development work.
Even worse, 1.5.2 is only a minor update. Not much actually changed code-wise from 1.5.1, especially on the server side. The compatibility problem is entirely brought on by several very specific incompatible changes from Mojang.
So I figured, why not simply revert the incompatibilities? Update MCPC+ to 1.5.2, with the latest Minecraft, Forge, and CraftBukkit upstream versions. Include all of the 1.5.2 changes, except for the obfuscation and version number changes.
This worked out better than expected. None of the 1.5.1 mods I tested with broke: they were running just fine on the 1.5.2 server, once I undid Mojang's mod-compatibility breakages.
Long story short, MCPC+ 1.5.2 is now built in two variants. The normal build (B), with the new incompatible changes from Mojang, and a special "151compat" build (C) without them. Both are built from the exact same code, and have all the latest 1.5.2 updates, with the exception of the obfuscation and version numbers changes – that's literally the only difference.
Personally I'm using the 151compat build, since not all mods I'm using have updated to 1.5.2 yet, nor are they all using srgnames for version-independence yet. But thankfully, since it is built from the same source, it receives all the same fixes and updates as the regular build.
Unfortunately, this strategy will not likely work across major Minecraft updates.