I understand how a lightning network channel is like opening a bar tab, where you can make multiple transactions off-chain between two parties, and closing the channel puts the total tab on-chain. However, if I'm visiting 20 different stores and making one transaction at each store, wouldn't I need to open 20 different channels and end up publishing 20 different transactions to the bitcoin blockchain anyway?
No you don't need to open a channel with everyone whom you want to pay.
The lightning network is a network of payment channels. This means that you can use the first channel to send money to other participants in the network as long as there are sufficiently liquid paths of channels from your node to the recipient.