If the name of the boolean value makes it perfectly clear what it is, then I'd always opt for version 2. However, sometimes you're stuck with a particularly obtuse variable name that you can't change, at least, can't change right now... Refactoring is all well and good, but I try and avoid refactoring too heavily when making functional changes to the code as well.
For example:
if (!NoDropDownInHeader == true)
{
// Activates when there *is* a dropdown in the header)
}
I've actually seen this particular example in production code and simplified it down to:
if (NoDropDownInHeader == false)
{
// Activates when there *is* a dropdown in the header
}
And I personally think that both examples are more readable (although arguably the firt example may be on par with thi one for difficulty of mental parsing) than:
if (!NoDropDownInHeader)
{
// Activates when there *is* a dropdown in the header
}
Note: Yes, I know the variable is badly named, but changing it in the multitude of places that it was present was outside the scope of the change I was making due to the number of places if would affect.