Can someone tell me where smart contracts are actually executed? Is it on the miners or the nodes? Is it run in all miners/nodes, or just one? Also if I declare a variable where is that state persisted? On the blockchain or other storage?
Every full node (those participating in mining and those not) runs the smart contract code involved in every transaction.
Your second question is answered here: Where is the state data stored?. Essentially, because that state is computed from the transactions that make up the blockchain, that storage doesn't need to itself be part of the actual blockchain structure. But in practice, it doesn't make much of a difference. (Nodes store it, just like they store the blockchain.)