The first one is the direct system call, platform dependent, probably faster/you can use all platform dependent bits (like sticky bit on Unix/Linux for instance)
The latter is the portable API which is supposed to work the same on every platform, note that second argument is no longer an anonymous integer but a constrained type.