Usually they do it behind the scenes. So I'd love to know where apps are actually sending data and from whom they are actually getting responses.
Some apps offer a network monitor, e.g. OS Monitor does:
As you can see in the second screenshot, it even allows you to look-up the destination and show it in a map.
Quick System Info offers a similar feature:
As you can see in the last entry of this screenshot, it even names the app which holds this connection.
These are two examples of real-time monitoring which do not require root. If your device is rooted, you might also want to take a look at DroidWall: This app offers to keep a log of all network accesses for each app. Plus, as a Firewall app, you can restrict apps to WiFi, mobile network, or even forbid them network access altogether.