Thanks for answers.
2) It seems like I placed the callback when you clicked on the checkbox instead of in the check function. I think I probably did this so that no callbacks would be triggered when you manually check the checkbox.
You can always adjust the source code to your needs and remove the callback code from leftMouseReleased and keyPressed and place it in the check and uncheck functions (in both CheckBox and RadioButton).
But I think that callback shouldn't be done that way by default. Callback isn't reaction for mouse movement done by user, rather it is reaction for checked/unchecked. From my experience with gui systems (not game ones), it doesn't matter if the user or the code uses it - the onWhatever() functiong gets called in both cases. I really think you should change it by default. There aren't many reason why you should separate code and user checks, it makes the code MUCH uglier. See, sometimes you check one chekbox and it automatically checks another checkbox - and why in this point the functions related to that checkboxes shouldn't be called?
From the callback handling code point of view it really shouldn't matter what is the reason why the checkbox is checked, when it's checked the callback handler should always be called.
The very simple example from wxWidgets - when you close the application from code, the onExit() function gets called even though the user didn't press the close button. The same applies to other callbacks as well.
I really think that the current way is counter-intuitive and you should change it. And if someone really needs to do it the other way (checking in code doesn't send callback), you can always have a default argument in check function (send callback = true). But to be honest, I'm yet to see an use for that in any well designed gui application (i've done some wxwidgets gui programming before).
It's not only my point of view - as I said other guis send callbacks even when it is triggered by code. I hope that I explained it well and you can see the point.
The another example is not related to gui but shows the idea too - for example when you have networking code and you have callbacks when receiving packets (ie enet library), it sends the callback even though the user of application doesn't have any control on it. The callbacks should be related to code, not to the user.