1) You can use GIS (Geographic information systems) software, such as ArcGIS (... that is, if you can gain access to them through school or work or whatever... otherwise it's like $20,000 per license



.... no, I'm not joking about the price) to convert a jpeg/image > raster > reclassify to only have land/water (for simplicity) > use python to extract the raster as a Numpy array, draw the map based on the array, and then assign whatever custom terrain/feature/bonus types that you want.
Edit: Actually, you can probably extract the array directly from the image (never tried it though, I work mainly with Rasters/shapefiles) using python.
That's the gist of it at least, actual implementation (particularly the python part) is a little more complex due to the ton of other variables involved. If you are unfamiliar with the process, you should take a peek into the map scripts that comes with the game (i.e. Big and Small, fractal, w/e) to get an idea of how the classes and set up and processed.
2) &3) Wouldn't it be nice if WB had StarCraft (even StarCraft 1's) editor's preset scripting modules & functionality?
if you are unfamiliar, you should look into the existing custom mods & scenarios for 3) to get an idea as to how they are set up, and emulate that process in your own product.
4) For setting rivers in WB, I just find it takes a LOT of practice not to screw up in getting diagonal rivers to bend in the right directions and to end up on the coast the way you want them to. Quick tip: when you want to change the direction the river is going without messing up when doing a really small bendy/curvy pattern, click on some random far-away tile to "reset" the A->B relationship between your existing selected tile.