After hearing about all that controversy regarding ethnic and colonial troops at Dunkirk it got me wondering about the Indian participation in the war. So my question is, why did nearly 2.5 million Indians fight for the British during WW2?
How much of it was because of duress (or anything like that) and how much of it was out of patriotism and loyalty to the Empire?
Not an answer to your whole question, just a comment on this part:
How much of it was because of duress (or anything like that) and how much of it was out of patriotism and loyalty to the Empire?
There was no direct duress, the Indian Army during WWII was the largest volunteer army in history. There are no accounts I am aware of, of people being forced to join up. They did so of their own free will.
Just a brief context to the volunteerism:
Intially, there was strong resistance in India against joining the war. The reason was that Britain unilaterally committed India to the war, without consulting any Indians. The Indian National Congress and Muslim League, the two major political parties at the time, were completely ignored by the British.
This produced enough resentment among the masses to endanger the war effort, which frightened the British. They sought to make amends by appealing to Gandhi.
Gandhi had been out of political ife in the preceding years (1934-39), while he was living at his ashram and cultivating cottage industry. He was summoned to a meeting with Viceroy Lord Linlithgow when the war broke out.
Gandhi was not hard to convince. He had previously made extremely negative comments about Naziism, calling it a "naked and ruthless force reduced to an exact science". Linlithgow persuaded him that the world was under serious threat from Naziism, and Gandhi threw in his support behind the Brits.
The INC was less amenable. They were willing to go along with Gandhi to back Britain against Germany, but they wanted concessions in return, specifically independence from Britain after the war.
This was a tense time for the independence movement. In 1935, British Parliament had passed the Government of India Act, which gave increased power to Indians in government. Basically, it put Indians in charge of Provincial governments while the British retained control at the National level. This was deeply unpopular among both Brits and Indians. Many Brits saw it as the beginning of the breakup of empire. Churchill resigned his cabinet position in protest. Indians said it didn't go far enough, they demanded independence.
So in this atmosphere, when Gandhi came out in support of the British war effort, the INC agreed, but demanded the promise of independence after the war was won. The British negotiated by sending Stafford Cripps with the Cripps Commission, to offer Dominion Status after the war.
Ultimately, this didn't work out and the Scripps Commission failed. On the plus side for the Indians, Dominion Status was a path to independence. They could withdraw from the Commonwealth and become fully independent. On the minus side, the proposal had a clause that parts of the Dominion could leave whenever they wanted, which would break up India.
The INC rejected the Scripps' proposal and sent them home without an agreement, but it was already 1942 by now, and Indxians had already been at war with the Axis for 3 years, based on Gandhi's commitment and the INC's temporary approval as negotiations proceeded.
So things sort of just continued the way they were as the INC and the British continued to debate how best to solve the impasse upon the failure of the Cripps plan. By this time it was clear to both sides that independence was inevitable, they were just arguing when and under what terms. So there was no clear need to hold back Indian participation in the war as a threat.