I have some btc in a legacy electrum wallet (when I go to receive and select new address they all begin with 1).
I think I should store my btc in a segwit wallet.
If you don't spend those coins, imho you should
not hurry with this change.
Should I create a new segwit wallet and simply send my btc there?
Is there a way to upgrade my wallet without incurring a fee?
The only way is to create a SegWit wallet and send your coins there. This means that you will have to pay the miners' fee.
The miners' fee depends on how busy the network is and how big your transaction is (not the amount of money, instead the size in bytes). For example, if you received coins many times to that address, the size of the transaction will be bigger.
So I suggest you watch a website like
https://mempool.space/ or
https://jochen-hoenicke.de/queue/#0,24h and if you see the mempool almost empty or the fees very low, then it would be the moment for your move.
This way you won't pay much. But again, this is feasible only if you don't intend to spend in the near future, since I don't know when the fees will get very low again, it may be in the next week-end or in months.
Usually the fees are lower in week-ends.
Is there a way to retain the history (not a major issue if not) from the old wallet?
It's usually recommended to keep a backup of the old wallet, just in case. And then it will have the history.
Also if by chance all the transactions are made with only one address from the old wallet, it will be easy to see all the history
on any blockchain explorer just by starting (backwards) from the transaction that sends the funds to the new wallet (but not in the wallet).