How does the Android interface work Unix permission wise? I'd like to know how the backend/permissions work for Android(I'm using v4.1.2 on a s3 mini).

On android, I'm capable of running GUI applications which have different UID/GID-s on the system as seen in ps/top output.

On a linux desktop, all applications you run as your user, unless you use sudo/su to run software as someone else.

So how does android run GUI apps without throwing up permission denied errors and asking for password from the start?

I've looked around on search results and haven't found anyone discussing this.
Android uses (or abuses, depending on your point of view) the Unix user and permissions system for something other than separating different people on the same computer. Instead, it uses them to isolate apps from each other. Each installed package (app) has its own Unix user ID created. The files belonging to that app are owned by that Unix user, and can't be accessed by other Unix users. When an app is started, the zygote process (which is like GNU's init) ensures that it switches to the correct Unix user before running any of the app's code. That way, apps can't read or write files owned by other apps. If they try to do so, they'll get the kind of "permission denied" errors you're asking about.

The GUI really has nothing to do with filesystem permissions, because it's not a file on the filesystem. Only the Android system itself can write to the framebuffer directly: all apps go through Surface Flinger, the GUI compositor, to present their GUIs to be drawn on the screen. This doesn't go through the Unix permission system at all.