Applications can be constructed from more or less independent parts.
For example we can have computational engine which counts something, manages data, etc. ...
That Engine Part is independent from rest of components.
Then we can add Interface Part, an intermediate between Engine & User.
The Interface accepts input, for example: mouse clicks, text or numbers typed, and more... to pass such to Engine, then after receiving results present to the User properly.
There can be different Interface Views* of Engine's Data, transformed or not... which together form Graphic User Interface (GUI).
In one interface view we can look at data and see for example: details of person's Art preferences to present it to the User. in another interface view, for example we can sort user names alphabetically or other way... and present in form of a table on monitor's screen.
Because we have separated idea of data (model) from idea of graphic user interface view (GUI view) one team can develop engine part not worrying about how it's presented... while another team is responsible for GUI. Work is faster that way, as more people can be easily involved without teams interfering each other too much. Little of communication between teams is still required however.
In Computer Sciences there's even a Design Pattern known as Model/View/Controller (MVC)... but many people disagree how it works in certain situations.
* There are multiple meanings to word 'View' in Computer Sciences.