When and why should I create a list on a app web? what is advantages and disadvantages of having a list on app web?
Lists in the app web are good for storing instance-specific app configuration data since a single app may have many instantiations across a farm.
Also, apps will always have full control over their app web so they are guaranteed to be able to read from, write to, and delete list items on a list in the app web. If a list were in the host web and the app needed to write to it, the app would need to request (and be granted) that permission by the site owner installing the app. Putting the list in the app web "takes all the guess work out of it."
Finally, lists in the app web will be deleted (along with the rest of the app web) when an app is uninstalled. This prevents the solution developer from having to write logic to delete a list from the host web when the feature is deactivated/solution is removed, so the whole uninstall process is cleaner and won't leave things behind (as in the pre-app days).
One disadvantage to having a list in the app web would be if the end users needed to access the list directly for any reason. Although unlikely, if they did, the app developer would need to expose a link to the list somewhere. (An end user wouldn't be able to readily navigate to the app web and view its lists, etc.)