Customizing the default Yocto packages

I have built Linux operating systems with packages before, but not with Yocto. The available documentation online seems to assume you already know everything about Yocto, or else it is incomplete or outdated.

I have successfully built the default OS for the ConnectCore6SBC, and created a test layer to familiarize myself with Yocto.

I want to take the working build, dey-image-qt, and strip it down to create a more minimal boot, then customize the list of installed packages/recipes, and eventually modify the u-boot environment, device tree, and other files before adding my custom applications.

What is the best practice for this?
Copy the layers supplied by Digi into new layers, and manually modify them?
Create a local git branch, make my changes, and merge future updates supplied by Digi?
Create local patch files?

Ideally, I want my own custom system but also the ability to pull kernel and application updates in the future without creating a maintenance nightmare.

Is dey-image-qt the wrong place to start?

Alex Gonzales who is one of digi lead Yocto developers published a very good book on the topic:
https://books.google.com/books?id=yNi6BwAAQBAJ&pg=PA209&lpg=PA209&dq=yocto+add+jvm&source=bl&ots=HXfc4nOoKa&sig=zfrw4FgmflI4_itWriDuWhW5WVQ&hl=en&sa=X&ved=0ahUKEwiS57LGi4_LAhWFm4MKHX3VBTMQ6AEITzAH#v=onepage&q=yocto%20add%20jvm&f=false