If you're just handling one single-user computer, just use configuration.nix
. Also, stuff related to admin, system maintenance, or anything host-specific goes here.
As you say, if you want a portable config you can use on many computers for yourself, home-manager is your friend. I use it for all my systems, NixOS and otherwise.
I only use nix shell if I need something once, or at least rarely. It's for one-offs.
If I'm writing or packaging something I'll use a flake...but if I want it installed on my systems I'll import & use the flake in either my system or home-manager config. Define a package and an overlay, at which point it's just a regular package.