1. Clone to a TEST instance from the current working Production system. Try your patching on this TEST instance and see how it works.
So you could easily identify any issues while applying those patches to the system. Also will get a general idea of downtime. Always keep your TEST instance as much as identical to your production system.
2. Read carefully the patch README file, if any doubts check with Oracle by logging a SR. Also ask the experts from Oracle forum and they will explain to you everything based on that patch.
3. For the application patches, requires to enable maintenance mode before applying any patch.
Sometimes, you may use "options=hotpatch" to apply the patch online without enabling maintenance mode but all its depends on the following conditions
a. What is the patch
b. Size of the patch, and
c. What are the modules it is going to affect.
Always requires to enable maintenance mode for the following
a. All patchsets
b. Family packs
c. Minipacks, and
d. AD/FND patches
But for small patches which only need to replace a package with a new one you can apply the patch online.
As I told you earlier, always best practice is that, try your patching on a TEST instance first and see how it works.
In Windows systems, you have to shutdown the application services before relinking executable files, otherwise the patch will fail and you will have to run it again after stopping the services.