VB.NET has two logical operators that VB6 did not: AndAlso and OrElse. They generally replace And and Or in conditional logic, and they are worth using by default.
And and Or still exist and work the way they always did. The difference is that AndAlso and OrElse short circuit: they stop evaluating the expression as soon as the outcome is certain.
With AndAlso, if the left side is False, the right side is never evaluated, because the result is already False no matter what. With OrElse, if the left side is True, the right side is skipped for the same reason.
That buys you two things. The obvious one is efficiency, since you are not running code whose answer cannot change the result. The more useful one is that it lets you guard an expression safely:
' this can throw, because Count is evaluated even when obj is Nothing
If obj IsNot Nothing And obj.Count > 0 Then
' this is safe, because the right side never runs when obj is Nothing
If obj IsNot Nothing AndAlso obj.Count > 0 Then
The first version will throw a null reference exception the moment obj is Nothing, because And evaluates both sides regardless. The second version never touches obj.Count unless the null check passed first.
That pattern is the main reason to reach for AndAlso and OrElse as your default, and to treat And and Or as the special case rather than the other way around.