Then I wonder how can I handle diplomacy between the several nations at one time.
The AI for that may be hard to program. Ideally, you can organize a group meeting, where you make propositions, then countries like it or not, and when enough countries like it, then it's passed. This may require counterproposal, and that's the tricky part
Ok, good point. It seems then that alliances between nations will simply have to be "Please attack my enemy, and I can do nothing to enforce my request."
I would introduce a notion of "contribution vs reward". Each member of the alliance would gain points representing his contribution to the war.
For instance, each unit sent to do actual fighting = 2 points, each unit killed during the war, 1 point, each ennemy city captured = 3 points, etc.
Then I suggest changing the peace resolution: you should be able to ask that you can territory at the end, but necessarilly to simply wipe out your ennemy (see Europa Universalis). For instance, capturing 5 cities may allow you to keep 3 at the end, the two others returning to their initial owner.
Then, you can use the contribution versus the peace resolution. Give points to each captured city (representing it's worth), to the tributes you can get...
If an ally contributes 25% of the war effort, then he should get 25% of the peace resolution. You have two options here: make it a rule where it is mandatory to give hom 25% of the spoil of war, or make it a option, where if you give less the ally becomes angry at you, and if you give more, he will get happier.
It can give some interesting strategy. Imagine US is oppposed to Russia, and need UK support.
UK is engaged in a war against Argentina. They send 10 units in the war. US join the war, and sent 5 units. They capture 6 Argentinans cities. During the peace resolution, Argentina agrees to give 3 cities. US says UK can keep them all: as they ask for less than they contribute, UK is happy and like US more. And so US can gain support against Russia.
For this to work, I suggest that you cap your relation to +500 for "normal" friendlyness, and to get above it, you need an extra action.
Like you can send gift in $$$, but this cannot make you go above 500. Actively figthing in a war as ally gain make you go above 500.
I need to keep in mind that this is more of a strategy game than a simulation. Sure, I'm using some aspects of a real world simulation, but I want the game to be fun first, and simulation second. I can certainly include immigration, but I want to consider birth rate first. How should I handle birth? What algorithm should I use?
Of course, but I think immigration is a very important issue, and shouldn't ignored.
Regarding your question, I think you should have two parameters, birth rate and death rate.
The birth rate should be relatively high, and will be reduced when advancing in the tech trees, with techs such as "women labor", "universal suffrage", "contraception".
Then, death rate should start also relatively high, and will be reduced with some building such as sewer system, hospital, some techs (like imminuzation). Regarding food, if the food output of a city is > needs of population, then either the death rate is raising, or the people emigrates.
And when birth rate > death rate, population increase.
You can also include birth rate / death rate effect in a tile. Snow = increase birth rate (people have to do some exercice to fight the cold, and they are more often in home with time to waste

), jungle = increase death rate.
Ideally, you should time the techs so there is a period where death rate should diminish a lot (progress of sanitation / medicine), and birth rate stay high for a while. So you can experience a population boom. and then later, the birth rate will diminish.
It's also important that you consider the manpower as an important resources, and sending waves after waves of soldiers to be killed should have a negative impact on population.
And last, you can add events such as "plague" that could temporarily affect the death rate or "baby boom" that can increase the birth rate, for a few turns.
Regarding the flag, I think they are a bit to covered.
And last, with the vast crowed gathering here to answer your question, we could as well exchange emails
