Posix creates files with the open() system-call, which returns a file-handle.
Windows creates files with the CreateFile system call, which returns a file-handle.
Creating and opening a file should be a single atomic operation at the system level, because otherwise you could be subject to race conditions when you first create the file, then later open it, what if someone swapped a new file in place between the two calls (create and open) and you aren’t actually writing to the file you intended to? Attacks like this are common.
I can’t think of an API that separates create from open… And in almost all cases, the open will return the file-handle with write-permissions enabled.