Delve into the intricacies of the CREATE2 opcode and its various use cases, such as counterfactual contract deployment and upgradeable contracts. Examine potential security concerns, including address prediction, contract self-destruction, and ways to mitigate these risks when writing your celo smart contract.