On the Ethereum network, gas is a fee that must be paid to the network in order to make a transaction.
Gas is paid directly to miners to compensate them for their computational effort used to run the network. It's called "gas" because of the easy analogy to driving: to go anywhere in a car, you must make sure you have enough gas in the tank to cover the distance. Similarly, to complete the transaction you want to make, you must make sure you pay enough gas to cover the cost.
I prefer to think of gas fees as automated taxes. Both are required fees paid by beneficiaries of the network (citizens) to cover the costs incurred by running the network.
While gas fees may seem inconvenient, annoying, and at times expensive, gas is a critical part of the Ethereum network. Gas fees incentivize miners to run the network, disincentivize spam by giving every transaction a cost, and prevent infinite loops, since a transaction will fail once gas is depleted.
Nevertheless, paying fees on a per-transaction basis is not always ideal, especially for low value transactions, when gas fees can approach or exceed the value of the payload.
Ultimately, high gas fees can even disincentivize people from joining or using the Ethereum network.
For this and other reasons, developers are focused on building technologies that minimize or eliminate gas fees for many interactions with the Ethereum network. One such scheme in the NFT world is "lazy minting," in which an NFT is not actually created on the network until it is purchased, in order to save the seller upfront cost. Other solutions include "layer two" dapps and marketplaces which allow users to conduct most transactions within a network built on top of Ethereum. This can save users from having to make frequent or one-off calls to the Ethereum blockchain by batching transactions.