Magento 2 out of the box comes with three deployments the installation can be set to.
In order of performance (best to worst).
As the name suggests, you should be using this deploy mode in production at all times or you will incur significant performance penalties. For development
Whilst it is not stated in the Magento 2 documentation, production mode is useful for local development when you want to preview the performance of the store before changes are pushed live. This is especially important when testing the full page cache for cache bleeding between customers.
If you intend to develop in production mode, it is important you regularly clear the caches and consider disabling the full page cache unless you explicitly want to check for issues with the full page cache and your changes.
A middle of the road type of mode as it is neither for development or production. The notable difference to developer mode is that static files will still be cached and not be regenerated on every request.
Only intended for developers, incurs a significant performance penalty due to static content being regenerated on every page load. Using developer mode should be done selectively as static files and generated code is recreated on every request.
Unless you explicitly require the features of developer mode for debugging you should be able to work with default and production modes.
There are many different caches in vanilla Magento 2
When developing, caches will help speed up the Magento performance but changes may not be shown until the caches are cleaned or disabled. One notable cache is the full page cache, this will cache the entire page output using either the built in cache of Varnish.
Unless you are testing the full page cache with your changes, you should disable the full page cache and stop Nginx/Apache from proxying the requests through Varnish.