If I'm a miner, how can I choose which types of transactions to accept? e.g. non-standard OP_CODES and so on...
You need to compile your own version of bitcoind that includes your preferences for transactions you'll accept. Note that this doesn't work if you're pool-mining, since then it's up to the pool operator to decide this.
The notion of "a miner can choose which transactions to include" is somewhat academic, as there's not a quick and easy way to do it.