How do I use CHECKLOCKTIMEVERIFY to prevent a transaction being spent before 100 blocks? I'm creating a Bitcoin based lottery application. An entry into the lottery is a transaction spending 1BTC. 

If someone guesses some arbitrary value correctly, they can claim the entry and send this 1 Btc to an address they control. 

I wish to have functionality as follows: if no one guesses the correct number after 100 blocks, then I can claim it as the operator of the lottery. 

Can I do this via:
Entry transaction 
  IF
     CHECKLOCKTIMEVERIFY 
    payable to a correct guess
  ELSE
    Payable to my operator public key
  END

Then when I try to spend this entry transaction, I set the nLockTime to the current block. 

Throughout I set all the sequence numbers to 0xFFF... So that the transactions are mined.
Yes, you can use OP_CHECKLOCKTIMEVERIFY to make a transaction output unspendable for a certain number of blocks.  However, you can't use it directly in an if-else block as you have described.  When OP_CHECKLOCKTIMEVERIFY executes, it doesn't place a result value on the stack.  It either throws an error (invalidating the transaction attempting to spend the output), or continues executing as if nothing happened.

To create a transaction as you describe, you will need to use multisig, such that one party can spend the transaction as soon as the correct number is provided (input to a hash function, I presume?), OR you can spend it back to yourself after the lock time expires.  This is basically how the lightning network works.  You should check out Lightning Networks Part II: Hashed Timelock Contracts (HTLCs)