The concept of an address is basically the same for wallets or contracts, the use case for an address is what can be different.
A wallet address will store only the balance of it. (and other info related to the wallet, like nonce)
While a contract address will have an “extra feature” to execute specific instructions (code) in it.
For example, the ChainLink Token (LINK) its an ERC20 smart contract.
To transfer LINK from a wallet to another, you interact with the LINK contract address and execute the method “transfer”.
A liquidity pool its an smart contract that can manage a group of tokens. More Here.
A protocol its a group of smart contracts that execute something, in the case of Uniswap, its a DEX.
You can read more deatils of it here: https://ethereum.stackexchange.com/questions/51647/the-difference-between-contract-address-and-wallet-address
Hope this helps