Normally, after inserting a snippet, the caret would be positionated at the end of the inserted text. This is usually not what we want. That's where the tabstops come to place. You can define places, where, after pressing TAB, caret goes (therefore the tabstops name). Each tabstop is defined using $N notation, where N represents number from 0 to 9 and also defines its sequence order. The sequence is important, since you can press TAB up to 9 times, each press causing caret to move to another tabstop. Last tabstop is always $0, to mark first position, use $1 (second is the $2 mark, $3 third and so on). Imagine following example:
$0Hello, after inserting go here: $1 then follow here $2 and then return back to the beginning.
In the previous example, snippet is inserted with text: Hello, after inserting go here: | then follow here and then return back to the beginning. Caret is at position marked by |. Now you may write some text, by pressing tab you move to position marked by $2, write some more and finally after pressing TAB you will be redirected to the beginning of the originally inserted snippet piece.
Final note: if no tabstop is defined, $0 is automatically included at the end of the snippet code (and so is the caret after inserting).