Make an Ember app when you want to put an application on the web.
Make an addon when you want a library that is easy to use within multiple Ember apps.
Make an engine when you have multiple teams in a large organization all trying to work on a single Ember app, and you need added isolation between them to keep them out of each other’s way. An engine is a special kind of addon.
There’s a fourth thing you could add to this list, which is “dummy app” (an unfortunate name, it would be better called something like “test-harness-app”). When you’re developing an addon, you need some Ember app to test it within, and that is what the addon’s dummy app is for. Some addons also use the dummy app to hold documentation or demos.
Moving on to dist output: only apps really have any. It’s always an app that gets built and deployed. It’s true that if you add an engine to an app, it can add some extra files to dist, because engines can be lazily loaded.