AFAIK, no, SQL will keep searching through the DB entries looking for matches to the query until it has reached the end of the table.
EDIT: Not entirely sure on this, so don't rely on it.
EDIT AGAIN: Thinking on it some, I have a feeling the WHERE clause may be applied before the SELECT statement, so it filters the data you are querying first. So, no, it doesn't "keep looking". The result-set is, I believe, built as the query runs - it'll take all the rows from the database/table you're querying, apply the WHERE clauses to filter it to valid records only and then apply the SELECT statement (in this case SELECT * will return the whole set. But you could've asked it for just the TOP n records or something similar.)
And I'm afraid I don't get what you mean in your second question - are you asking the difference in the results that'll be returned?
If so, the first query will return any results whose login is "Jhon", whereas the second will only return records whose login is "Jhon" and whosee password is "123"
As you have said that login is unique, I understand that these will most likely be the same (assuming there's an entry matching the second query). However, if you had a record whose name was "Jhon" and whose password was "password", that record would be returned by the first query, not the second.
EDIT: In this instance, the second query would return an empty set (assuming there are no other "Jhon"s in the DB with password "123"