I recommend
Superbox, because it has both app2SD and a cache cleaner.
I'm always up against a space limit, so routinely use those two utilities and a third, Memory/CPU, which shows how much storage space I have left (and also lets me free working memory).
app2SD will show you a list of all the apps you can move to SD. Before I move anything to SD, I remove its cache and data, and force close it. Then I move to SD. I take those precautions so as not to leave any remnants in main storage--however, I'm not knowledgeable enough to know whether those precautions are needed.
Once you've used app2SD to move your apps, you don't really have to explicitly check it again, because whenever you install a new app, app2SD will notify you if the new app can be moved to SD.
Superbox's cache cleaner also lists all apps with cache. There's a "Clear all" button, or you can do that individually.
So routinely, I tap Cache and "Clear all", then check Memory/CPU. Sometimes there's a lag in it recognizing the new, lower size. I haven't discovered what exactly gets it to re-calculate, but after exiting Superbox and doing something, usually when I come back it has re-calculated your storage.
I've moved everything to SD except those that offer a widget I want to use. (I also keep the VOIP app sipdroid in main memory, but only because sipdroid's setup is so fragile, and I want it to be as fast as possible to avoid voice lag.)
Once you move an app to SD, you can't use the widget, even if you move the app back to main storage--you'll have to uninstall and re-install and leave it in main storage to get use of the widget again. Or rather, I *think* the above is true for all apps, but certainly it's true for many apps.