How difficult would it be to say add in Brazil and Argentina as colonies, independent or otherwise?
Very easy, because they're already there. Open each of the MapData files in the data directory with a text editor, change MapArea9Possession1Owner=Optional to MapArea9Possession1Owner=Neutral, and change MapArea9Possession2Owner=Optional to MapArea9Possession2Owner=Neutral. You might want to change the possession value at the same time; possessions with a value of 200 get counted as home possessions for whoever controls them.
As to the implied more general question of how easy it is to add possessions, it varies depending on how well you want to do it. The minimum necessary is something like this:
MapAreaXPossessionYOwner=[owner name]
MapAreaXPossessionYLocation=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYName=[possession name]
MapAreaXPossessionYValue=[possession value - note that 200 or more will be treated as a home possession]
MapAreaXPossessionYOil=[0 = no oil, 1 = has oil]
MapAreaXPossessionYWeatherZone=[affects weather; every possession in the unmodded MapData files uses 0]
MapAreaXPossessionYBaseValue=[fleet points that the naval facilities in the possession can support]
MapAreaXPossessionYRebellion=0
MapAreaXPossessionYNaturalOwnerName=Error
MapAreaXPossessionYInvaded=-1
MapAreaXPossessionYInvasionSupport=0
MapAreaXPossessionYBuildingBase=0
MapAreaXPossessionYBaseLocs0=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYBaseENP0=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYBaseNames0=[port name]
MapAreaXPossessionYBaseSizes0=[importance of port relative to others in same sea zone; normal values are 1 to 6 or so]
MapAreaXPossessionYBaseLocs1=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYBaseENP1=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYBaseNames1=[port name]
MapAreaXPossessionYBaseSizes1=[importance]
MapAreaXPossessionYBaseLocs2=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYBaseENP2=[longitude DDDMMSS] [latitude DDMMSS]
MapAreaXPossessionYBaseNames2=[port name]
MapAreaXPossessionYBaseSizes2=[importance]
MapAreaXPossessionYBaseLocs3=00000E 00000N
MapAreaXPossessionYBaseENP3=00000E 00000N
MapAreaXPossessionYBaseNames3=Error
MapAreaXPossessionYBaseSizes3=0
MapAreaXPossessionYBaseLocs4=00000E 00000N
MapAreaXPossessionYBaseENP4=00000E 00000N
MapAreaXPossessionYBaseNames4=Error
MapAreaXPossessionYBaseSizes4=0
MapAreaXPossessionYBaseLocs5=00000E 00000N
MapAreaXPossessionYBaseENP5=00000E 00000N
MapAreaXPossessionYBaseNames5=Error
MapAreaXPossessionYBaseSizes5=0
added in the block in MapData for the particular sea zone in which the possession is found, and you also need to change MapAreaXPossessionCount=Y, found near the start of the block for the sea zone, to MapAreaXPossessionCount=(Y+1) or the possession won't appear in the game.
MapAreaX = sea zone in which the possession is found.
0 = Northern Europe
1 = The Mediterranean
2 = West Africa
3 = Indian Ocean
4 = Southeast Asia
5 = Northeast Asia
6 = North American East Coast
7 = The Caribbean
8 = North American West Coast
9 = South American East Coast
10 = South American West Coast
11 - South Pacific
12 = Southern Africa
13 = Central Pacific
14 = Northern Pacific
PossessionY is the number of the possession you're adding, counting from 0. Note that MapAreaXPossessionCount near the start of the sea zone block should be one greater than the highest number used for a possession in that sea zone; if you forget to change that, your possession will not appear in game.
Owner indicates the possession owner at game start (if looking at the MapData files in the data directory; if looking at the file in a save directory, it indicates possession owner in the current save state).
Location is the latitude and longitude for the spot you want the flag to sit at, expressed in degrees, minutes, and seconds in the standard coordinate system - DDDMMSS for longitude, DDMMSS for latitude; leading zeros can be dropped at your discretion, at least within the degrees portion of the coordinates. East longitude is indicated by appending an E, West by appending a W; similarly for North and South latitude.
Name is the name of the possession.
Value is the value of the colony for the purpose of budget calculations and peace treaties. Note that Value=200 (and possibly other high values) indicates a home possession and is ignored for budget calculations.
Oil indicates whether or not the possession produces fuel oil (0 = no, 1 = yes).
WeatherZone affects weather conditions in battle scenarios generated from the battle definitions at the end of the possession definition. All of the possessions in the standard MapData file use WeatherZone=0, though there are three other weather zones (1, 2, and 3) used in the WarInfo files.
BaseValue is the number of fleet logistical points that naval facilities in the possession can support. Typically 1 to 10 for minor possessions, though some possessions with major naval facilities - e.g. Singapore, Hong Kong, the Philippines - have in excess of 100.
Rebellion indicates if the possession is in a state of rebellion. Use 0.
NaturalOwner can be left as Error and ignored, but if you want to use it, set it to the name of a standard power to avoid issues that may arise if someone doesn't have a particular custom nation installed.
BaseLocs are the latitude and longitude of each port in the possession. You need to set non-default values for at least one.
I'm not sure what BaseENP does, but it might be either a point near the base defining the boundary of the minefield circle or a point near the base defining how close a ship should get to it before the "do you wan to enter port" message pops up. You can set it to the same value as the BaseLocs, but should probably have something slightly different.
BaseNames is the name of the base as it appears in the game.
BaseSizes is the relative importance of the base (higher = more important). As I understand it, surprise attacks are more likely to launch against more important bases; I don't know if it's used for anything else. Typical values seem to be between about 1 and 6.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
A more complete possession definition will also include the following:
MapArea9Possession1CAPositions0=564424W 362055S
MapArea9Possession1CADirections0=338
MapArea9Possession1CAPositions1=570909W 352532S
MapArea9Possession1CADirections1=357
MapArea9Possession1CAPositions2=572920W 350448S
MapArea9Possession1CADirections2=321
MapArea9Possession1CAPositions3=564030W 365217S
MapArea9Possession1CADirections3=357
MapArea9Possession1CAPositions4=633909W 424547S
MapArea9Possession1CADirections4=39
MapArea9Possession1CAPositions5=671617W 453320S
MapArea9Possession1CADirections5=47
MapArea9Possession1CAPositions6=00000E 00000N
MapArea9Possession1CADirections6=0
MapArea9Possession1CAPositions7=00000E 00000N
MapArea9Possession1CADirections7=0
These sixteen lines, found after the portion of the possession definition given above, define where coastal artillery built in the possession will spawn in battle scenarios. Your possession will be functional within the game without these, but if you do not have non-default values set for or do not include these lines then coastal artillery built in the possession will not spawn during battle scenarios taking place near the possession and you may get error messages.
Positions are the latitude and longitude of the coastal artillery emplacement, Directions is the facing of the battery in compass bearing (0 = North; I believe only whole degrees are valid). Note - setting an appropriate facing is IMPORTANT if you want coastal artillery to be functional, because non-turreted coastal artillery emplacements can only shoot at things in a limited arc in front of them, and this is what defines what constitutes "in front."
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
The final part of a possession definition is a set of battle definitions. These are to my knowledge completely optional, and are probably the most complicated part of a possession definition. Look to other possession definitions in the MapData file for examples.