Looking closer at it ain't trivial, but for sure solvable.
I (almost) solved the problem for my situation to have 1 Workstation, the work horse as you say, and my laptop I use only when I'm travelling, and it shall provide the same working area as if I'm at my workstation. When I return, the situation on my workstation shall be updated automatically to the changes I did while I'm abroad.
And, as you already figured out, too, the hardware differs, so there can't be exact 1:1 copies of each on both.
I differ four kinds of files:
1 the system itself, including userland (ALWAYS separate system from data!)
2 individual config files for each machine
3 the files I have in in my home
4 files which are under version control
1 I do not automatically. I update, and upgrade by hand. But you have to look out to keep both systems at the same versions. Otherwise for example my firefox will strike. My ~/.mozilla/ is also synced with rsync. Maybe not the best choice, more kind of 'brute force', and one may consider to use the service firefox provides instead, if one uses firefox at all, or look for other, better options.
However, if I get a .mozilla/ into my home that differs from the firefox version installed, my browser acts like being freshly installed.
You may observe other uncomfortable things if both machine do not run the same versions.
So system and userland shall be kept at the same version.
2 The system wide config files (e.g. /etc/ ) are backupped for each machine individual, and are not synced.
3 Almost everything I keep in my /home/ I synchronize with rsync, while each machine has an individual exclude file which excludes for example my window manager's config file, while my workstation has 4 monitors, and my laptop of course only one with another resolution. So I need individual config files for such things, which shall be not kept identical, so excluded from rsync process.
4 Also excluded from the rsync process are all directories that contain stuff are under version control (shell scripts, programming, LaTeX, whathaveyou.)
Additionally I don't do the synching directly between both machines, but I have a little server that keeps an copy of my home (backups), so actually it looks like that:
Workstation <-> Server <-> Laptop
There are for sure other ways. But that's mine just for to consider to differ several kinds of files, and how to deal with them. It also helps a lot to sort the different kinds into own directories. I have an own directory under /home/ that contains everthing version controlled. This makes the exclude file a lot more easier as when those directories are spread everywhere - but that's very personal, how to organize your home, also for this are solution how to automate.