The map_heights.tga is the tga that controls both the coastline and the heights displayed on the campaign map. The heights determined on this tga also affect the slopes of the battle map and hills / mountains etc which are seen as distant views.
Map_heights.tga will be found in the data/world/maps/base folder of a vanilla installation, it may also be placed in the data/world/maps/campaign/campaign_name folder if the other map files are copied there as well.
The map_heights.tga must be twice the size of map_regions.tga plus one pixel on each axis. So if map_regions.tga is 100 x 100 pixels then map_heights.tga must be 201 x 201 pixels.
The blue areas represent the sea areas - these areas will be water in the campaign map regardless of any different areas marked as sea in map_regions.tga and map_ground_types.tga. If there is any discrepancy between these files the sea area shown in map_heights.tga is always used. The game applies a default ground or water type to any mismatched areas in map_ground_types and extends or contracts the regions shown in map_regions to fit. In RTW and BI (not M2TW) a corrected_regions.tga is generated and placed in the Rome - Total War folder each time a campaign is started, the corrected_regions.tga shows the adjustment the game has made to make the map_regions.tga fit the map_heights coastline.
The blue colour normally used for the sea is RGB 0,0,253. Slight adjustments can be made to this colour, see here for discussion on adjusting the colour to get rid of triangular projections along coastlines.
Land areas are represented in grey scale pixels, e.g.: RGB values from 1,1,1, to 255,255,255. A true black of 0,0,0 can be taken by the game to mean sea, you can not locate a city or port over a 'land tile' of 0,0,0 unless you are using a map_heights.hgt in which case 0,0,0 values seem to convert correctly.
RGB 0,0,0 values can be used for isolated pixels along a coastline to produce a more detailed and naturalistic effect. Using large blocks of 0,0,0 without a map_heights.hgt file causes graphics problems in the game, with flashing between sea and land displays.
Editing / Creation Tips
For 'real world' based maps satellite data can be downloaded and used as basis for the map_heights.tga see How I Make my Maps by BDH. This gives a quick start towards the making of an accurate map, however much manual editing normally needs to be done to the heights map afterwards to sort out coastlines and make sure that areas battles can be fought on are not ridiculously steep.
For fantasy maps there are several ways, but there are a few programs who can help you with it. (How-to make a height map without PhotoShop)
Beware of using any sort of re-sizing method that blurs the blue of the sea into the 'black' of the land if you try re-sizing a map_heights.tga - it will give you some very strange results!
As the map_heights.tga is the only file used to determine sea / land areas if you think you might be having problem with a landmass crash (affects RTW/BI only) then you can try loading with an all black (RGB 1,1,1) map_heights.tga
Short land-bridges where units are able to cross an area that looks like water can be formed by adjusting coastlines in the map_heights.tga.