I am following a tutorial and it basically explains about the cause of race condition which happens when resizing Hashmap in a multithreaded environment:
The answer for your first question is in the quoted text:
"because java HashMap doesn't append the new element at tail instead it append new element at head to avoid tail traversing"
If HashMap would store them in insertion order it had to traverse the list at each insertion or store an extra pointer to the end of the list (and maintain it). Anyhow storing the elements in the bucket in insertion order would not give any benefits (at least I can't think of any).
The answer to your second question relies here:
http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html