be warned: environment design is an art form on its own. people go to university to specialize in it. lol
that being said, what game engine are you using? most of them have some form of terrain generation ability, im most familiar with unity’s system, which is quite nice and automatically handles LoD for trees and detail meshes (grass, rocks scattered about, etc).
the unity terrain sculpting tools are quite nice, and you can also load up a heightmap to automatically generate a good base terrain for you to start on and sculpt it to your desired result. but if your not using a good standalone engine, like say, for some weird reason you wanted to use the blender game engine (shits and giggles i guess), you can still use the height map + sculpt method, and if you want a terrain with “built in” caves or other “under the surface” details, you’ll have to manually model it anyway. probably the easiest thing you can do is get Terragen and procedurally generate a cool terrain, then export the heightmap to use in blender, or your game engine of choice to generate the terrain mesh, very hard to go wrong there unless your shooting for super deformed cartoon style.
make an account on CG textures, your gonna need it. unless you want to go the painterly cartoony route, in which case… well there are some texture packs available, or you can “roll your own” if you have a graphics tablet and photoshop/gimp. textures are the #1 most important part to getting a believable result. you will need some nice cutout textures to make your tree foliage and ground detail items (small plants, grass, etc), as well as good ground textures (possibly the hardest of them all to get right! haha)
beyond that. just take your time. getting a good result like you see in the AAA games requires hundreds of hours of tweaking. honestly, if your working at making a game on your own, i would recomend that you not go for hyperrealism and instead take a more stylized and simplified route. it’ll make things far easier on yourself (as in, you’ll have a chance of finishing before your hair starts turning grey! haha
Now that the lecture is over, on to your other questions: in my opinion, #2 would be the easiest to pull off for a newbie. depending on how large you want the environment to be. sculpt up a base terrain, if you want a river, the easiest way to do that is to create a plain, scale it to roughly the length you need, then subdivide it a few times along the width, and quite a few more times along the length, so you can deform it to fit the riverbed you sculpted. then BEFORE you deform it, UV unwrap it, then you can deform the river to match the riverbed. and when you apply a texture to it, and animate it its y offset or X offset, depending on how you UV mapped it), it will look like a flowing river following the curves! fun stuff.
make a good variety of trees, 10-20 variations (im a detail freak, you can do it with less!), make you some ferns (simple plain mesh with alpha fern texture applies, same as leaves on trees). and you can use blenders particle system to randomly distribute them for you. and then tweak like crazy till it all looks good.
have fun, but if you intend to actually run a game with it in real time, be mindful of the tri/poly count, you don’t want to blow more than 1 million tris (visible at the same time) on your landscape, or you wont have much overhead left for characters and structures, and monsters, etc.