You can do that with any distribution, unless you expect your configs to line up exactly.
If you don't keep your /home on a separate partition, back it up. Install Debian, making sure to separate /home and root into different partitions this time. Go through your ~/.configs, find the ones you've changed (most of this will probably be browser shit) and put copies aside. Then take all of the configs out of your home directory backup (including the originals of your changed configs) and put those aside in a different place, deleting them from the backup of your home directory. Backup the virgin ~/.configs from your new install (do not delete them from the new home directory.) Then copy your old home directory files (sans configs) over your new ones using rsync. Compare your manually changed files to the virgin files from the install - has the format changed, will they still work? Are they located in the same directory in Debian as in your previous distro? If it looks fine, copy them in. See if they work. If they don't, look up why not. They probably will.
If you keep your home on a different partition, then install as if you don't, and let Debian create a home in the same partition as the new OS. Do the same config dance as above (annihilating your old configs other than the customized ones), and switch your /home to be mounted from your old home partition.
Or at least this is what I do. On your desktop, you probably want to install testing, on your servers stable.
I think it's better to avoid pinning to testing since it gets a lot of updates right after a stable promotion (after the package unfreeze), which you probably don't want.
For home use, Debian testing is usually a good balance between things not breaking and things not being ancient.
For servers, Debian stable is probably a better choice.
Even the current stable is fairly “new” so I don’t even mind.
In practice this means adding something like this to /etc/apt/preferences (along with adding entries for `unstable` in /etc/apt/sources.list)
# use `n=` when referencing codename (i.e. buster/bullseye/...)
Package: *
Pin: release n=bookworm
Pin-Priority: 550
# use `a=` when referencing archive (i.e. stable/testing/unstable)
Package: *
Pin: release a=unstable
Pin-Priority: 520
That way apt will pull in any packages missing in testing from unstable, and once the package is reintroduced to testing, will prefer that version rather than continue to track unstable.Maybe I've been lucky but I've been running testing on my non-server desktops and laptops for 13 years now and have only rendered my system unbootable once (required having to boot up a live CD to reinstall an older working version of some bad libpcre update that had been rolled out).
Warning: if you're used to PPA life in Ubuntu Debian doesn't offer an equivalent that I'm aware of. EDIT sibling comments indicate home brew might solve this.
The problem with Debian is you can't usually pick "a thing" from another channel, you mostly have to fully commit. Testing is great until it isn't and anecdotally sid/unstable never fixed that for me - I just had to learn to build the occasional package from source
Ultimately I'm a lot happier having gone on that journey but it can feel very arduous the first few times apt doesn't have a recent enough version of something available