So, I've answered my own question and thought I'd share it.  Sometimes Win32::GuiTest uses brief messages to get the job done, and don't send all the messages to the control that you might need, so at some point you'll have to dive into the Windows APIs and find what you need and send them yourself.  Microsoft Control Spy 2.0 is good for learning what messages are being thrown around for different types of controls.  Once you've figured out what message you want to send to the control, you should add a constant to the guitest.pc file (the sub BM_CLICK {} below).
For doing checkboxes, here's what I did:
sub BM_CLICK            { 0x00F5; }
SendMessage ($hnd, BM_CLICK(), 1, undef) unless IsCheckedButton($hnd);
For unchecking, you do the same but only if it actually is checked:
SendMessage ($hnd, BM_CLICK(), 1, undef) if     IsCheckedButton($hnd);
That works great, and a similar thing is needed for dropdowns:
sub WM_LBUTTONDOWN            { 0x00000201; }
sub WM_LBUTTONUP              { 0x00000202; }
SendMessage($hnd, WM_LBUTTONDOWN(), 1, undef);
SendMessage($hnd, WM_LBUTTONUP(),   1, undef);
SelComboItem($hnd, "whatever"); # the builtin selection changer is enough here
SendMessage($hnd, WM_LBUTTONDOWN(), 1, undef);
SendMessage($hnd, WM_LBUTTONUP(),   1, undef);
This is all probably obvious for windows GUI developers who actually use this stuff, or maybe it's all gory details that are hidden in most modern programming environments.  I wouldn't know, I use Perl :)
I guess if you wanted to, you could do $BM_CLICK = 0x00F5 and then use $BM_CLICK in the SendMessage call.  But since GuiTest uses the sub method, it's probably best to keep that convention going.

From: Erik Knepfler
Sent: Wednesday, June 27, 2007 11:31 AM
To: ''
Subject: CheckButton doesn't fire onClick() event?

Hi folks,
When I use CheckButton() it checks the box, but does not fire the onClick() (or whatever) event that the GUI needs in order to do other things. 
In Visual Test, they have a method called WCheckClick() which performs the equivalent of a left-mouse button click on the checkbox.  I don't want to deal with coordinates and use mouse clicks for what are probably obvious reasons. 
Does anyone know of a way to do this?  I'm thinking maybe to cheat by using PostMessage to send some kind of Click message to the control but I'm swimming in mud trying to figure it out...