Can anybody point toward more comprehensive tutorials?
You can probably blame me (among others) for not writing those, but as the API is still slowly changing we are reluctant on writing docs that will be soon deprecated, still I wrote some stuff in the past that can give you some ideas. Damian Avila blog can also be a good resources as he himself use custom templates to hide/show code cells, and wrote about that in some of his posts. I've also seen this but haven't fully read it yet.
Is there a way selectively show or hide some blocks of codes from the input?
Either using cell-level metadata, or markup language, yes, but it will require custom code in templates, you'll probably figure out by reading the above links, while you dive in nbconvert architecture. But it wont be a one liner.
3)
will be the more difficult, but I suppose you can do it with custom filters on the markdown cell
You though and feedback on the process are always welcome.