How do I save buttons in their states so that I have them toggled by default every time I ope zbrush? So for example I don’t want to remember to press “UndoHistory” every time I start a new project, I want it to be always on by default. Any way to do it?
Many settings can be stored by storing the UI. The shortcut for that is Ctrl+Shift+I or Cmd+Shift+I. These settings will be in place every time you start ZBrush.
http://docs.pixologic.com/user-guide/customizing-zbrush/interface-layout/custom-interface/
However, remember that there are also interface elements that don’t even exist at launch. That requires a little more creativity. What I would do with your example is to record a Macro where you go through the same steps that you always follow to get the particular set up and settings that you want. Save that Macro with a name of “New Project.” You can then give it a hotkey if you wish and can even customize your UI to put it where you want in the interface before storing the UI with that new button location.
I forgot to mention that I already tried storing startup config and document - didn’t work, hence the question. I’ll try it with macro, though I was hoping for an easier method - instead of having to remember to toggle an option I will have to remember to run a macro now, thank you! 
Take also a look to this plugin:
Wow, thanks! Still not exactly what I was looking for but this plugin has many useful options I’m definitely going to use.
I posted a custom UI and a bunch of macros to go with it. You’re welcome to check them out.
Thank you, guys!