It's best to check on both client and server. The client part should be done automatically for you, but it's a defensive measure to check it on the server in case someone has bypassed your UI using whatever means.
You can assign a ValidationGroup to your button, which should be the same value as your ValidationGroup that you've assigned to your validators. When your button is clicked, it may perform client-side validation on the same group and, as you mentioned, will halt execution (prevent a postback).
On the server side, you will do exactly as you mentioned:
Page.Validate("WhateverGroup");
if (!Page.IsValid)
return; //Didn't pass validation
else
//Do whatever
If you have multiple groups, then you should check each of them if applicable (some groups may not apply depending on certain conditions which is why you would generally use groups).
EDIT
In response to your question:
The 'default' group that is checked is determined by the control that is posting the page. That is to say that if the control posting the page has "WhateverGroup" as its validation group, then only validators with "WhateverGroup" will be validated.
Page.IsValid should only be checked after you've called the Page.Validate method. Page.IsValid is just a flag that essentially gets tripped at anytime you call Page.Validate and something doesn't validate, whether you called it with or without a group.
References: