geth is a tool used to run a full Ethereum node on the system. Suppose you want to access an Ethereum network then you need an ethereum node for that. An Ethereum node is a system that follows the consensus of the Ethereum network.
Solidity is a programming language used to write smart contracts.