Apps was introduced in SharePoint Server 2013 and is based on a new concept usually depending on client side code, especially in Office 365. But on premise you can still use .net framework to produce apps for SharePoint Server.
An app is supposed to work in an isolated container who shouldn't have the potential or risk to break a SharePoint Page, which a web part can. The aim from Microsoft is to secure SharePoint from potentially malicious code, making SharePoint unresponsive.
The intention is also for the App to consume REST APIs for everything it does, but it doesn't have to be that way. Read more on...
Overview of apps for SharePoint
YouTube: SharePoint Apps (the initial scare)