I run
https://www.moneypot.com/ so I can answer your questions.
From an engineering perspective, the hardest and most surprising part how difficult it is to make a bitcoin transaction (to process a withdrawal). The first problem is running out of available outputs.
The problem with this, is all transactions source 1 or more outputs, but result in 0 or 1 change output. I don't want to spend from unconfirmed outputs [see below], and don't want to batch up payments [I want to pay people instantly] -- so this ends up being quite a big pain in the ass. Basically I need to design a system that converges on N outputs as opposed to the default of converging on 1.
And the second problem is resending unconfirmed transactions (possibly with an increase in fees) -- but you need to be careful of malleability concerns, and send the second transaction in a way that would conflict with the original one.
To be honest, none of that is that hard. Just amazing that, other than the centralized coinbase service, there seems to be no software that allows me to reliably send transactions! And it's something you really want to get right, and not screw up.
---
The hardest part for my game in particular was because I wanted to create a unique game with the following aspects:
* Has skill, and that skill must be pvp (so you can actually have a positive expected return)
* Doesn't require skill (so you can play strategy oblivious, without losing too much)
* Fair if you try play very conservative (i.e. no fixed house margin, or it's too penalizing for conservative bets)
* Fair if you try play aggressively (i.e. like the current dice sites)
So I probably spent 3 whole days of just playing with concepts. When I had the concept I liked, I spent another 2 days running that maths, and confirming them with simulations.
---
As for the operations, it's pretty simple and I'm not sure it's really different than running any other site. Other than you're perhaps a higher profile target faster. My setup is pretty simple, a CDN for caching static resource -- a single webserver behind a load balancer (so I can easily ramp it up if I'm under DoS) -- and a single postgres database, with a slave in another continent (and nightly backups).
I also have a bitcoind instance running on a cheap digital ocean instance, which I use as a watch-only node to monitor for peoples deposits.
--