Maybe. Then again, it's all about expectations. If things behave as one would expect, there is no learning curve.
That is true, and I didn't expect the current behavior. I thought, if an ls lists it, then it exists. Martin Bährs expectation expresses the same thing another way: If it doesn't exist then using open() on it in "wcx" mode shouldn't fail. This is the most generic form of existence, and thus imho appropriate for a function called "exist".
When it comes to POSIX, does it clearly define such a generic "existence" concept? Just because some functions, e.g. open(2), returns ENOENT in some situations doesn't really account for anything - there are others, e.g. lstat(2), that do it differently.