Deployment means that the files of your design time are copied into the runtime, so that the server's content is refreshed. The selection of files to be copied is defined by the project directory settings.
If program files (.class-files or other resources) are updated then the server also needs to be reloaded. There are two types of reloading:
If pressing the default "Deploy" button (i.e. not opening the menu items below), then there is an automatic detection if to "reload" the application or to "hot deploy" the application or to not reload the application at all (e.g. if only web resources have been updated).
When opening the menu button you explicitly can select the different levels of deployment on your own - and select the corresponding menu item.
By default the copying from the project directories into the runtime directories is a normal copying: all files from the project are transferred that are different to the runtime. There in no deletion of files that are "too much" on runtime side by default. - In case of major changes (e.g. re-packaging or re-assembling the libraries after e.g. pom.xml updates) you should use the "clean and deploy" function: here the runtime directories first are deleted - and then the project files are copied over. So the result will be a totally refreshed runtime.