Depending on your Android version, and whether you are rooted or not, there are multiple possibilities. On all rooted devices, you can use Titanium Backup ★ root (pro version recommended -- there's nothing like it). For non-rooted devices, there's no app that can really backup everything (which is an intended permission issue for security reasons: no app can directly access another app's data). But provided you're running at least ICS (Android 4.0.*) or higher, take a look at the question Full Backup of non-rooted devices.
To backup your app data you should have to rooted to use any application that can backup the data. But if you have not rooted then you can try the following command which will work without root, but using adb. Turn on USB debugging, connect up to your computer, and run
adb pull /data/data/package name C:\where\you\want\the\files.
There is also AppMonster. It is available as both a free and a paid app (€2.96) on the Play Store. ES File Explorer is nice too (it gives more significant names to the backed up APKs) but AppMonster is better. I use both of them and AppMonster can back up apps that ES File Explorer does even not find (Seesmic Pro for example). I almost asked a question about "un-backup-able" apps on the site because of that.