The developer documentation right now leaves a lot to be desired, you'll have to figure a lot of things out yourself: https://developers.steem.io/
The best way to learn is probably to look at some smaller open source Steem tools on how they do it. I just looked at the two JavaScript Steem libraries dsteem & steem-js and the C++ Steem code and found everything I needed out myself.
As for monetizing upvotes, you basically use Steem as your database. Every item becomes a Steem post and that can be upvoted. And then, to fund development, you can set a percentage of the upvote rewards to go to you. That's how DTube for example does it, they take a 25% cut off the Steem upvote rewards for videos AFAIK.
Thanks for your help! Great info.
You should do tutorials
I plan to do a screencast at some point, teaching specific programming concepts is easiest in a video IMHO. After I've added posting, re-steeming and voting to my app Columns for Steem I should be able to explain pretty much everything about Steem development you'd need to know, then I'll start working on that screencast.
From what I heard, there's going to be a new Steem API at some point which will make everything a lot easier and much more powerful since it'll be using GraphQL. No idea when that's going to happen though, just saw it mentioned in the comments on Github of the dsteem library I think it was. Of course, then I need to learn everything again :) But it's going to be worth it.