timeshift can create and restore either btrfs snapshots or rsync-based backups β which it also calls snapshots.
timeshift will by default only back up the root filesystem, but not the home directories. However, you can easily add directories to what must be backed up or snapshotted, as well as that you can tell it to exclude directories. It will by default already exclude certain directories such as /run, /tmp and /var/cache.
timeshift can be run manually, or by way of a cron job. For this, you will need cronie running, because it does not support systemd timers. You could of course set up a systemd timer for it, but then timeshift will not be able to interface with that timer in order to configure it β the configuration would all have to be done by way of the systemd back-end.
As for recommendations, well, I personally donβt run timed backups. I run timeshift manually β usually by way of its gtk-based user interface, but Iβve also already used it from the command line β whenever Iβve installed a package, whenever there are Stable Updates, whenever I change something to the system-wide configuration, et al.
Even though I use btrfs for most of my filesystems, I prefer actual backups by way of rsync onto a dedicated partition on a spinning hard disk drive β my system itself is installed on an SSD. I back up /home as well, but I exclude /var/cache, /var/tmp, and similar directories.
In addition to that, I also do separately and manually make complete copies of my home directory onto that hard disk drive, because my home directory gets updated more often than the whole system, and therefore does not warrant that I would run a full backup for that.
Besides, the developer of timeshift explicitly states that, while timeshift can back up your home directories too, it was primarily intended for backing up and restoring the system only.
The above are my personal thoughts, but your mileage and your needs may vary.