I think you already posted these questions in my blog which i answered there. But still I will try to answer here as well for our java greenhorns!
1. To show/hide portlets, one way is by using backing files. Check oracle documentation.
2. There are many ways to set preference depending upon the portlet you are using. For Java portlets, you can use portlet.xml to set, also you can portlet APIs to access preference values at run time. Even you can set read-only preferences as well. For other portlets like jsp portlets, page flow portlets, etc you can set preference at development level using workshop. Refer the documentation.
3. Backing files are used for doing pre-processing activities for portal resources such as books, pages, portlets and desktops.
4. This i am not sure. You can set different look-and-feel for each desktop.
Hope this helps.