Depends on the code.
OpenMP does nothing to prevent data races, and anything beyond simple for loops quickly becomes difficult to reason about.
No.
It is easy to divide loop body into computation and share info update, the latter can be done under #pragma omp critical (label).
No.
It is easy to divide loop body into computation and share info update, the latter can be done under #pragma omp critical (label).