How to properly downgrade a phone that shipped with a newer version of Android? I recently purchased two Samsung G5 phones from Amazon with the intent of ROM development on a downgraded version (the phone shipped with 5.0). I took one of the phones and successfully downgraded the device to an earlier 4x version without issue. It was only later when I attempted to do this on the second device that I ran into problems. 

As it turns out, the same firmware I flashed on the first device does not seem to work with the second. After a bit of research I realized that the second device was of a different locale. Both devices, however, have the same model number. So this leaves me with the following questions: 


What is it about different locales that may make firmware incompatible for same model devices? (Aside from carrier types: GSM, CDMA)
If a phone ships with a newer version, is it possible that downgrading may be impossible?
If not, what information, aside from the model number and region, is needed to select the proper firmware version for a deivce? (PDA,CSC, etc appear different across firmware versions)


Speaking to the third question listed above: I have attempted to flash countless 4x firmware images (for the correct model and region) only for the phone to get stuck at the Samsung splash screen.
Different Locales:
It is possible that the different locale is shipped with a different bootloader.
This bootloader is responsible for loading up Android and may contain additional checks for stock firmwares before booting. It is also possible that the device was shipped with different hardware (Qualcomm/Exynos processors), so that Android has to include the needed kernel modules and firmware modules to work on that particular device.
Downgrading a device that shipped with a newer version of Android:
It's certainly possible that an updated bootloader may prevent you from flashing a complete older version. There are ways to circumvent this:

Don't flash the bootloader: Some bootloaders just prevent you from downgrading themselves, but not the rest of the firmware. It is then possible to flash just Android and use an older version with the new bootloader (possible on the Samsung Galaxy S3, personal experience)
Use a custom ROM: Custom ROMs are usually free to be installed, even if the device shipped with a newer version of Android. They just don't allow them to be checked, because they are not stock. Thus it's in my opinion the best way to downgrade your device. (Let alone all the advantages of having a pre-rooted, debloated device).
Don't downgrade at all: Older versions of Android often carry bugs, security issues, missing features and warnings in your IDE, that make app development a pain. ROM development only needs a compatible, unlocked bootloader and a custom recovery, so don't worry about upgrading Android on your device. (Unless you got the device from a carrier that puts their custom stock ROM on their devices, then try to not upgrade at all and wait for the community to come up with ways to unlock the bootloader and flash a custom ROM)

What information can help you to find the right firmware:

Go to Settings -&gt; Device Info  and read your Baseband, Build number and Build version
Look up your IMEI on the box or behind the battery on your device (or look for Status -&gt; IMEI information, if your Settings app contains this information)
(if you are unsure which firmware to use because there are different hardware layouts): Get the serial no. of the mainboard. Because currently all phones are SOCs (system on a chip), you should be able to determine whether to use the Qualcomm Snapdragon, Exynos, MediaTek etc. version of the firmware you are looking for.
If in doubt, ask on the appropriate forum on xda-developers; most major devices have sub-forums like &quot;General Help&quot;, &quot;ROM development&quot; etc. The people that are active there know what they are doing and should be able to help you out.