Certain instructions operate differently, and some of the elements of a motion axis tag are accessed differently (direct read/write vs GSV/SSV). When you change the firmware revision of the controller in the project, the compiler will point out any logic errors caused by the conversion.
Caveat emptor, if you are using an L6x series cpu, many instructions take MUCH longer to execute in v20 vs v16. YMMV, but this can cause some odd machine behavior to appear in a previously "healthy" system.