Will copying everything from /data/app and /data/data be enough for app's backup? I've got an android device (Xiaomi MiPad-I, Stable ROM) which is not quite amenable to rooting, so I can't install Titanium backup on that. However, I can boot the device using the CWM recovery and mount the /system and /data partitions in RW mode during boot time.

In this mode, I can copy anything I want by connecting to a PC and using adb commands. However, I want to know whether copying the contents of /data/app and /data/data to my PC be enough for the backup of all apps? Or is there anything else that Titanium backup does? I only need the user apps, system apps are already available by either a factory-reset or flashing a stock ROM.
To do a backup like you want, you can just copy everything from /data/data except the lib directories/symlinks (they will fail when you want to restore/push them).

A very easy thing to do is adb pull /data/data and then delete all the lib files (as symlinks are only files but those refer to directories).

Upon restore you can install each app, using adb install for example, and restore the data manually, ie. just push it back and fix permissions.
Make sure the apps in question are not running.

To fix permissions you can either do it manually/with a quick shell script. Read the owner of each app's data directory and recursively set that owner (and group) to that owner and group (using chown user:group -R /data/data/&lt;package name&gt;). Users and groups are in the format u0_a000, the symlink to lib is owned by install.