In terms of Windows system calls, getting process information can be done via NtQuerySystemInformation() with SYSTEM_PROCESS_INFORMATION as a parameter.
However, the true clue to this behaviour lies with GetProcessMemoryInfo() which mentions a permission called PROCESS_QUERY_LIMITED_INFORMATION discussed in Process Security and Access Rights. Specifically:
[With Windows Vista] The PROCESS_QUERY_LIMITED_INFORMATION right was introduced to provide access to a subset of the information available through PROCESS_QUERY_INFORMATION.
This exists because (if you keep reading that page) PROCESS_QUERY_INFORMATION is denied on some processes in Vista, particularly those with DRM. So in order to provide you with some information about the process you're running, you get this cut down version.
I'm not at a Windows box to verify this yet, but I believe that all users have at least PROCESS_QUERY_LIMITED_INFORMATION on any given processes so you are able to query limited information even on processes that do not belong to you. Their existence is one such property, although as SteveS notes in the comments, the detail is limited.