Yes it is possible to decompile .exes using tools like The dcc Decompiler. This will produce good results if the original program was written in C. If it was written in another language then you may have to try another tool that is suitable for that language.
When decompiling software, the more Assembly language you know, the better as you may have to examine the high level code from the low level assembly if the decompiler becomes confused or if some of the code was actually written in Assembly language.
Decompiling is an excellent way of studying how programs work at the lowest level. You will also find that in many cases the decompiled program will compile back into the exe but the symbols used to describe the variables are totally meaningless. You may have to do detective work to actually understand what the code means and does.
I don't see anything wrong ethically for decompiling the code for your own amusement or education but if you have malicious intent such as decompiling commercial software to change the copyright message to your own or to seek out a vulnerability for malicious exploitation then this could be considered unethical.
You may find that the developer has gone to some lengths to prevent decompilation by creating a loader that unpacks the software into memory or has code explicitly to confuse decompilers. This is all part of the fun.