Developers engaged in embedded development are probably running Ubuntu, Fedora, or macOS to write the actual code for embedded applications, but the actual embedded system will be running a custom OS image that has been purpose-made for the device:
the reference for building a Linux OS is here: linuxfromscratch.org <= has all the info neede to create your own OS from scratch (not be a derivative of Debian or RHEL, etc.).
However that’s hard work, so most embedded systems will use a known build-system that already has a large library of packages and the workflow needed to cross-compile a working image. Yocto and OpenEmbedded both have support for Amlogic hardware using latest upstream and LTS kernels and upstream u-boot which have good support for Khadas devices.
There are lots of good videos relvant to embedded development to watch from “Embedded Linux Conference” on YouTube (in the Linux Foundation channel). The “Kernel Recipes” and “Kernel Plumbers” conferences and “Linaro Developer Conference” channels also have good content. The main challenge is “embedded development” is a mile-wide + mile-deep topic, so it helps to focus in a little on a specific area of interest.