Yes, there are fundamental differences between SharePoint-hosted and cloud-hosted apps.
A SharePoint-hosted app may provision basic resources into its app web such as HTML/CSS/JS files, site column/content type/list definitions, etc. Under no circumstances can server-side code run within a SharePoint-hosted app.
You can run server-side code in a cloud-hosted app, but that code must not run on the SharePoint server. Cloud-hosted apps fall into two categories:
In a provider-hosted app, you are responsible for the infrastructure (again, external to SharePoint) where your app runs. You have lots of flexibility in the sense that you can run full-blown server side code and even take advantage of frameworks like ASP.NET MVC (or even use Java, PHP, or other non-Microsoft technologies as well), but you are also responsible for things like tenant isolation.
In an autohosted app, any web or database resources your app needs will automatically be deployed to Windows Azure and SQL Azure. You can run server-side code in your Windows Azure web site and multitenancy is provided automatically.
There are hybrid approaches possible that allow you to combine SharePoint-hosted and cloud-hosted capabilities in your app, but there are some security considerations to keep in mind. More information about those, as well as the various hosting options for apps for SharePoint, can be found here. Based on these differences, one would not readily convert an app from one type to another, but one could certainly augment an existing app by taking a hybrid approach.