Those times are just estimates, based on current network conditions at the time the estimate is given... And it would seem that it assumes no more transactions are added to the mempool.
Given that the mempool has been holding steady at 100,000+ unconfirmed for over a week (and currently 130k+), this last assumption is, in my opinion, very dangerous.
A lot of users see, 6-12 hours and think, yeah I can wait that long... And then wonder why their transaction is still unconfirmed 3 DAYS later...
Go check the "Tech Support" (and "Dev and Tech Discussion") and have a look at how many "stuck transaction for X days, HELP!" type threads their are at the moment... Sure a lot are paying like 10 sats/byte or 50 sats/byte... But I've seen a few that were like 300+
As for calculating transaction size, the important thing to realise is that it has NOTHING to do with the amount of BTC being sent...
A transaction of $1,000,000 can be smaller than one of $10... It all depends on the number of inputs and (to a lesser extent) the number of outputs.
SegWit has changed things a little... But when dealing with non-segwit, the "rule of thumb" measurement was basically:
Transaction size (bytes) = (Number of inputs * 148) + (number of outputs * 34) + 10
NOTE: When using Electrum, you can just click "preview" and it will give you a pretty good estimate of the size (it could be off by about 2 bytes at most)