A clearer way to think about this is that Terrain is essentially the natural ground whereas Surface starts at the top of the tallest item on that piece of ground. To use the tree example, imagine a very tall tree in the forest - Terrain begins at the base of the tree, Surface begins at the top of the tree.
Dan L - Geofences are easy to create and you can also query for the list of fences in the GeofenceMonitor for your app. Using this information, you can store it accordingly (Cloud in your example) and even use it to re-create fences elsewhere.
Note that while Windows will notify your app when a Geofence is triggered, it is up to your app at that point to take necessary action. That could be popping UI, making a web request, or in your example relaying the information to the Cloud service.