How can I disable unwanted data usage? I would like to remove unnecessary data usage. I have wifi at home and at work and I would like Android to synchronize/update apps/... only on wifi. In fact, I don't want Android to do any background action which consumes data when I'm not connected to a wifi network.

To sum up, basically, I would like a way (an app?) which disables data when not on wifi and enables it automatically when on wifi.

How can I achieve this?

I'm using Android 4.4 on a Galaxy Nexus (with the help of CyanogenMod 11).
With on-board methods: You could go to Settings→Data Usage and setup and restrict "background data" for all apps. For this, you would first need to setup some (fake) limit of monthly data (5 TB is fine; you just need to set simething here). Then you can tap each app and activate the check-mark to "restrict background data".

Alternatively, you can pick some automation app such as Tasker or Llama, and have it disabling background data altogether whenever you're not on WiFi, and re-enable it whenever you're on WiFi. Much easier to setup (as you wouldn't have to care for each app separately, and remember that whenever a new app is installed).

If you want to disable mobile data altogether, this again can be done via Setup→Network, for mobile data and WiFi separately. So you could just re-enable it manually whenever you need it; disabling mobile data has no effect on WiFi, so you wouldn't need to permanently switch back and forth. Of course, those automation apps could take care for that as well ;)