Hey Time2Skip,
Not sure I'm the best person to explain NBT, as there's a lot of stuff you can do with it that I don't even know.
Basically, NBT is a way to store additional data for items, entities, and other aspects of the game. Think of it like adding extra properties to something. If you're familiar with JSON, NBT is very similar, where an NBT Compound is like a JSON Object and an NBT List is like a JSON Array.
To get started, you can use the .viewnbt command to see the existing NBT data of the item you're holding. This can give you a better understanding of what kind of NBT data an item supports.
To edit an item's NBT data, you can use the .modify command. .modify add adds a new NBT Compound, .modify set replaces all existing NBT data with the given Compound, and .modify remove cuts out a specific part of the NBT data.
If you're looking to give yourself an item with specific NBT data, you can use the .give command, which supports NBT just like Minecraft's own /give command.
To copy items held or worn by another player, including their NBT data, you can use the .copyitem command. This, combined with .viewnbt, can be super helpful if you're trying to learn how someone did a specific thing with NBT.
Also, there are some commands specifically designed to make common NBT edits easier. For example, you can use .author to change the author of a book, .potion to edit potion effects, .rename to rename items, and .repair to repair items.
I hope this helps! Like I said, I'm not too familiar with advanced NBT edits myself, but this should cover the basics.