ItemGroup is used to specify ranges of level, rarity, root template, and names for items (check out ItemProgressionVisuals.txt). Here's an example:
new itemgroup "Rings"
add levelgroup 1,3,"Common"
add rootgroup "24c3d50a-c377-4c09-b3e8-274f8447494b",""
add namegroup "Green Copper Ring","",""
add levelgroup 4,6,"Common"
add rootgroup "d9c66e68-2ae3-4d27-9bb7-bc999c68b077",""
add namegroup "Green Copper Ring","",""
Rings is the
itemgroup that the following levelgroups affect. 1,3 is the
level range (so levels 1-3 can generate a Green Copper Ring),
rootgroup is the GUID of the root template to use, and the
namegroup is used to specify different names for different rarities (look at ItemProgressionNames.txt in an extracted Shared.pak file).
ObjectCategory is used in TreasureTable statdata to specify categories of treasure.
ComboCategory is used in ItemCombo statdata to use whole categories of objects as an ingredient in a recipe (Type of "Category").
Sourcery is associated with Sourcery skills I believe.
How does ExtraProperties work ,and what exactly should go there?
You can use ExtraProperties for things like:
Self:OnEquip:HASTED for Equipment (a.k.a. applying statuses on equip),
SHOCKED,5,1 on Weapons will have a 5% chance to apply SHOCKED for 1 turn.
The easiest way for figuring out what all these different stat fields do is to look at existing stats. Some of it can be fairly obvious when you start piecing it together.