1) Software programs are never completed. They may be complete for now, but requirements / needs will change over time. That means the program needs to change as well or it will become useless / irrelevant, and you're not going to find a business person who has invested hundreds of thousands to build software that can't adapt to their changing needs. What this means is that someone will need to read and understand the code, the quicker the better, and most often it is not the same person who wrote it. This person is the maintenance programmer. They are angry people. They want to murder people who write bad code. So don't give them a reason to hunt you down.
2) Elegance is simplicity. The principle of occams razor applies. If two competing techniques yield the same result, the better technique is the simplest technique. For coders, this means less chances for bugs, less code to maintain, and usually better performance.
How much effort should you put into writing elegant, simple code? As much as is reasonably possible given your skill level and constraints. It will never be the last time anyone looks at that code.