Can some one explain why i values 0,1,2,3,4 at time t=0 when i am using fork join thread, and i value is 5 always when i am using the fork join_none?

This has nothing to do with event regions. Everything here executes in the same active region.

A fork/join with a single statement inside it behaves almost identical to a begin/end inside it. The next statement after the join/end does not start executing until after the statement inside finishes.