Geth is the command line interface (CLI), a compiled binary, program, client for running a full ethereum node implemented in Go.
We will use Geth to:
EVM is the runtime environment for smart contracts in Ethereum. It is a 256-bit register stack, designed to run the same code exactly as intended. It is the fundamental consensus mechanism for Ethereum.
Smart contracts are deterministic programs deployed in EVM. They are used as account holding objects on the ethereum blockchain or executing any business logic.
They contain code functions and can interact with other contracts, make decisions, store data, and send ether to others. Contracts are defined by their creators, but their execution, and by extension the services they offer, is provided by the ethereum network itself.
Important note: Smart contracts are unable to communicate with the world outside of EVM. You can't call an API giving you the current exchange rate of EUR -> USD. You can't get the current weather temperature in Mallorca etc. This is a serious limitation you will realize once you will start working on your new Dapp (decentralised application). This limitation achieves state predictability of smart contracts.
Smart Contracts will exist and be executable as long as the whole network exists, and will only disappear if they were programmed to self destruct.