To give you some context. There are two versions of the managed package inside the client's Dev Org(v1.2 and v1.3). Currently, v1.2 is installed in production org. I'm trying to fix a production issue but the problem is, I wanted to check first the difference between v1.2 and v1.3 before I can make some changes. I wanted to ask how can I see the codes from v1.2, Is there options to download the apex classes from this version?
If you have access to the Packaging Org you can create a Patch Org (patch version) from the version you want to compare with. Then you login to the Patch Org, retrieve all the source code.
For example, your latest version is 1.3, therefore, you can already see the current code for the package. Next, you go ahead and create Patch Org (patch version) from the 1.2 version of the package, login in the Patch Org, retrieve all the source code, and compare it to the 1.3's code.
One of the key benefits of managed packages is
Intellectual property protection for Apex
As an end user, you cannot access the Apex code for managed packages installed in your org. You can see which triggers, for example, exist, but you won't be able to view the code itself.
For more details on functionality changes from version to version, you'll have to work directly with the managed package vendor.