I highly recommend reading Apple's UIViewController Programming Guide (http://bit.ly/2L3eT2).
The main practical reason to use a custom UIViewController, especially in a simple application that doesn't use navigation, is to handle rotation. UIWindow and UIViewController work together to determine whether or not the top-most view can handle rotation, and which orientations it supports.
If you just used a view, without having that view managed by a UIViewController subclass, then the application window wouldn't consider that view a candidate for rotation. UIViewController is the magic ingredient that makes auto-rotate possible.
Remember that all UI controls and even the main window itself are all "views", ie they are subclasses of UIView. So you're using views all the time. The idea behind a view is mostly that it takes responsibility for drawing a portion of the screen, so obviously the screen can contain many different views at the same time, and views can contain other views (in the same way the main window does, being a view itself).
The reason Apple recommends to have a UIViewController manage a whole screenful of space is because of the rotation system. Only one UIVC -- the one attached to the most recently, top-most added subview of window, or a current modal pop-up view -- will ever be asked to verify if orientation changes are possible. And ONLY the view associated with that one UIVC will actually be rotated. That's an important point to remember... If you have two UIVC objects managing the current screen contents then only the newer view could change orientation, potentially leaving the display in a mess.
So, in a nutshell, if you have a simple window-based app and don't need to worry about rotation, it's fine to just use your regular controls placed directly on the main window and ignore UIViewController altogether. You'll still need to provide a generic "controller" to handle layout changes and behavior, and to mediate data changes between the controls and your model(s), but that controller doesn't need to inherit from UIViewController, it can be a subclass of NSObject.