Why would it write if no changes have been made?
Nevertheless there are such thing as adding a confirmation message in case of a dangerous operation (and, if necessary, and option to disable such warnings). For example, C compilers usually have warnings, and you can disable any warnings that you do not want.
So most people do :wq so that it saves and then quit or do :q! to quit without saving changes. Most people stop using :q.