That is an enormous question and various developers will have their own views on the answers.
A general rule that I expect all will agree on is: Never mess with core files directly. If you mess with a core file directly, any changes made will be lost or need to be made again next time the core is upgraded. If you need to mess with core functionality to facilitate your own extensions, do it by overriding and extending core classes.
Before overriding anything in the core, see if is there is a suitable event you can hook into. Where available, events can reduce tight coupling and simplify maintenance of your extension functionality.
For coding style, follow the core. But make sure you follow the more recent parts of the core. Some of the older parts of the core contain code that would not pass current review.
My preference for development is to do everything in packages, even if a package is for a single use. (You will find some who, for single use applications, do the opposite and code everything in /application.)
Everyone uses an IDE. Favourites amongst developers here are Php Storm, Visual Studio and Eclipse. For debug we tend to split between those of us who reach for Xdebug first and insert variable dumps or logging second, and those of us who start with variable dumps and logging and only use Xdebug whan variable dumps don’t help.
Personally I start with variable dumps. Concrete has a lot of objects in objects in objects. the var_dump_safe() function comes in useful for avoiding infinitely recursive dumps. I also build debug options into my more complex packages, to dump or trace to the site log, page or browser.
There are some good developer addons in the marketplace that help create boilerplate packages and themes, add internal info or analysis to a page or show it in the dashboard, help edit custom script and css. Many of these are free or cheap and are often overlooked. There are also some good resources on GitHub.
Concrete is a pretty good platform for third party integrations as a client. V9.latest also has an API which 3rd parties can integrate as a service.
Before you code anything, look in the marketplace. Even if you end up not using an addon and doing your own thing, a free or few tens of $ on a marketplace addon can show you how others have attacked a similar problem. Depending on how you value your time, a time vs $ perspective usually means that looking at a marketplace addon or theme will save your project money.
There are many third party integrations in the marketplace, from very specific integrations to more general utilities for all kinds of integration (from my own addons, Universal Content Puller - Concrete CMS and Form Reform - Concrete CMS )