For example why is there different version of the same fimware but for different countries? e.g. version 2.1 for Canada, version 2.1 for US, version 2.1 for international/generic. What does international/generic firmware mean?
There can be several differences, or reasons for having two firmware versions.
Sometimes there are two completely different hardware variants, sold in different regions. For example, the Samsung Galaxy S III has a variant based on a Snapdragon MSM8960 system-on-chip (SoC), and another based on an Exynos 4. Because the hardware is different, the variants need different ROMs.
Even when there's no hardware difference, there can be other differences. Every language in the ROM increases its size, so usually phones come with a few languages that are common in the region they're sold. For example, a phone sold in the UK might have a "Western Europe" ROM with English, French, Spanish, and German languages. It would also contain APN settings for carriers in Europe so you don't need to input APN settings when you insert a SIM card.
Finally, if a ROM includes bloatware by third-parties, this will usually be specific to the country it's sold in. Our example UK phone might have an app for a British online music service, as a kind of advert, whereas the US ROM would instead have apps for some US online services.