How do we calculate the correct transaction fee to send?
is it possible to know how many bytes the transaction is likely to take?
you search for a wallet that is developed by a competent developer so that it can calculate the correct transaction size and then sets the appropriate fee based on your selection of "priority level" not fee itself.
seriously though, you shouldn't try to calculate transaction size and fees on your own. there is a very good chance you will mess it up and stay away from website such as bitcoinfees.earn.com they are horrible at suggesting fees.
my suggestion is Electrum. it is doing a pretty good job and it is user friendly. all you have to do is to enable the fee slider and the more to the left is less priority and the more you pull it to the right you get higher priority.
if you want to know the technical details of how size (or rather weight) is calculated then it is a different question. for that you'll need some prior knowledge of transaction structure, scripts, signature hash types, and serialization of transactions for signing with each different script type. and depending on each script type you'll get a different size and weight and depending on what crypto library is being used you may get fixed length signatures or with 1-2 byte difference which you need to account for when setting the minimum fee.
i can explain each details of it if you want but it will be tedious and may not be what you are looking for.