The only difference is that 'var' will run the value through
htmlspecialchars(), which encodes html characters like '<' and '>' (as < and >

so that they will appear as '<' and '>' in the output. Otherwise they would act as html tags, so if someone were to put html tags in the thread title they could affect the look of your page.
I have to admit I don't know offhand how it's handled - maybe those characters aren't allowed at all in thread titles or something. But you could do a test by creating a thread with a title like '<b>Bold</b>' and then see if vb:raw looks different than vb:var.
Edit: I just went ahead and tried it. If you create a thread with title '<b>Bold</b>' and use vb:var you get <b>Bold</b>, which means that htmlspecialchars is being applied twice. So you need to use vb:raw in this case, or you might end up with strange things like that.