Let's say we have a contract with functions for an online store built on top of the Ethereum blockchain. Whenever a transaction between buyer and seller happens, are new instances of that contract created for each transaction or are all transactions using the same contract?
You write the code, so you get to decide this. What you choose will depend on your requirements, but there's certainly no reason you have to use multiple contracts if you don't want to.
In your example, all transactions would use the same single instance of a contract. If you had multiple stores, you might consider having each store be a separate contract instance.