From W3 Form Documentation:
This [action] attribute specifies a form processing agent
That is, the form, when submitted, sends the values to wherever the action is set to. For the most part your noted actions all submit the form back to the same page the form is displayed on. You could also leave the action out all together or use <?php echo $_SERVER['PHP_SELF']; ?>
(if you're on a php page) to obtain the same effect.
Now, "?page=main"
will technically go to the same page as well, but with the page
GET value set to "main" (might be used for processing the output somehow for example). Use it if you need the page
value, otherwise do one of the blank ones.