Thanks a lot, very helpful!
Yeah, I'm actually quite comfortable with createrawtransaction from an API and parameter stand point. What I do is to always display the whole transaction (decoderawtransaction) including all inputs, outputs and fees and a breakdown in percentages to make sure that all is good.
I haven't tried on a bigger transaction and I'm too lazy to set up testnet, all my bitcoin dev was always done live and I've never lost any funds but for this project I'm a bit cautious for obvious reasons. I'm happy to experiment in the 10-20 USD range if blockchain fees allow.
Yes, if consolidating, picking up the fee for 1-2 transaction makes the cost negligible if you're consolidating >50 transactions anyway (and I try to keep them around 100 or a bit less - need to work out what is the best tradeoff in regards to diminishing returns and taking advantage of low blockchain fees at that moment is)
One thing I've not figured out is an easy way to see the size of the transaction beforehand to make a good calculation of the fee. I'm creating two transactions actually, first one with a dummy fee of 1sat, and then replacing this when I know the actual size of transaction and fire off only the latter one.