For scrollable panels: UIDraggablePanel in conjunction with clipping. You will need to deal with adding in masking colliders to prevent interaction with clipped content, but that's pretty easy. You can attach scrollbars to the widgets as well if you want that behavior.
If you want panels with buttons that change the content, just code that behavior in. The content & layout of the actual panels is so varied that trying to incorporate that kind of behavior into the NGUI base classes is likely a poor idea. You have your option of building multiple panels that you can swap out depending upon which button is pressed, or you can use one panel and dynamically rebuild the content based upon which button is pressed.
I'm guessing you're likely trying to build all of the panels & content through the inspector, which is fine for static content, but you'll want to learn how to code up dynamic interaction with the UI components if you really want the type of more complex behaviors that you're hinting at.