Andrea, designing a Mathematica application is a good idea. If you are interested in a guide to how to design a pretty much standard application look at A Mathematical Style at my web site.
I would be wary of writing notebooks for others that are just buttons and dynamic displays. It might be better to write 'literate' notebooks that have textual discussion mixed with the displays and look more like a paper. Most dynamic displays are not that self-explanatory.
A second method for hiding code, beside double clicking on the cell bracket, is to use the Mathematica Menu, Cell, Cell Properties/ Open command. (Alt+CPO) This semi-permanently closes a cell. The reader can open it if he wishes but normally it will stay closed, even between sessions. One advantage is that you can have textual discussion, hidden code, and then output so the notebook reads like a paper. Another advantage is that most code for many displays, such as graphics or dynamic displays, is one-off and it's very convenient to put it just where it's used.
The disadvantage is that the closed cell is very narrow and readers might miss it and not evaluate it. My solution to this was to design an 'Eval' button, which I insert in a Text cell before the code that automatically evaluates the code cell, keeping the cell shut. I have an application, Presentations, which is a help in writing literate notebooks. There is a button on the Presentations palette to paste the Eval button into a notebook so it's very convenient and I use it a lot. If you would like a copy of Presentations write me and introduce yourself and I'll send you a link.
Another technique with complicated displays is to put them in windows (which you already know how to do) that can be positioned next to the notebook. Then if there is a lengthy discussion in the notebook it can be scrolled without losing sight of the associated display.