I'd suggest reading Code Complete. He goes into quite depth on the subject (Devoting practically an entire chapter on it), and gives what I see as a convincing argument for #1.
He actually says not to use the second one explicitly since it fails the black box test:
if (blah)
{
//Foo
}
When black boxed turns into:
XXXXXXXXX
X
XXX
X
So the opening brace is seeming like the start of the block, wheras it's not (it's just the delimiter).
Instead, he recommends either the first option (opening brace on the same line), or:
if (blah)
{
//Foo
}
Since it passes the black box test:
XXXXXXXXXX
X
XXXXXXX
X
Note: I can't remember if the closing delimiter is supposed to be inside the block or not... I don't have my copy handy, so it might be:
if (blah)
{
//Foo
}
However, it all boils down to consistency. In order for your code to be readable, you need to be consistent in how you format it. Pick a method, and then stick to it. Don't switch from file to file or routine to routine. So long as you're consistent and actually format it, don't worry about it...