I know it's going to take days to fully sync (I have an HDD), but is there a way I can sync from scratch in the background and keep my computer usable in the meantime?
You could maybe try setting --max-concurrency=1 --prep-blocks-threads=1
which will limit the threads used. Of course, this will slow down your full sync.
You could also try these settings in combination with first downloading the raw blockchain outside of monerod
and then importing. See instructions here. That way you are simply downloading a ~70G file before even processing (importing), it to the daemon. Downloading a file shouldn't slow the rest of your machine down. The bit that does the resource intensive work is the importing, and if you use flags like above, you will be limiting the resources made available to monerod
at the expense of it taking longer to process.
Will changing the block sync size or setting a bandwidth limit help?
I don't think changing the bandwidth settings is the best way to go here. You'd be throttling your bandwidth usage as opposed to the resources being used by your system to process the downloaded data. Sure, you'd end up spending longer downloading as opposed to processing, but when you are processing, it's going to zap the same amount of system resources that you are currently seeing.
Simple mode (bootstrap)
in the GUI? In that mode, the daemon syncs in the background in a lower performance mode (which should allow you to properly use the system for other tasks). That is, the CPU usage is confined to 50%.