As given in the question, both loops are equivalent. In real code, however, it is typical that things are a bit more complicated, and in that case, the "i < n" condition tends to be tiny bit more safe. If, for example, i might increase by more than one, it might go past n and then the "i != n" version would result in an eternal loop.
This is a case of defensive programming. It is not universally accepted: some people prefer to make sure things fail as spectacularly as possible so that bugs are found early on. The defensive style may hide small problems like that. However, if you want to catch all bugs, you might as well go all the way:
int n = 5;
int i = 0;
while (i != n) {
int old_i = i;
// the real stuff of the loop here
++i;
assert(i == old_i + 1);
}
(Or, even better, use a langauge that supports synxtax for specifying pre- and post-conditions and loop invariants natively.)
The book "C Traps and Pitfalls" by Andrew Koenig (see http://en.wikipedia.org/wiki/C_Traps_and_Pitfalls
for starters) is probably interesting to you if you like to ponder on this kind of question.