I've been working on this myself, and I can tell you it's a confusing spaghetti mess. At least to me!!! I haven't figured it all out yet, but I feel like I've found a few classes that offer the most insight:
net.minecraft.world.gen.layer.BiomeLayer - used from LayerUtil
net.minecraftforge.common.BiomeManager - used by BiomeLayer, this one seems like it is most useful
net.minecraft.world.gen.layer.LayerUtil - seems as if it uses various Layer classes (that aren't the Layer class lol) to layout the biomes, and smooth out edges and stuff. Honestly, so many unnamed parameters in here that it's tough to know what's going on. A few of the classes/enums (i.e. EdgeLayer) have their paramters named, but not many of them. (using 20200604 mappings)
I wish I had more useful information to share with you, but I'm still trying to figure it all out myself, but the BiomeManager, BiomeLayer, and LayerUtil classes are a really good place to start, because the BiomeProvider seems more or less like a frontend to all this other stuff going on. And that's probably about the most information/advice you'll find on this subject anywhere lol. I have another thread that's similar, that I will likely update if/when I figure out more stuff, feel free to add on to it if you'd like: https://www.minecraftforge.net/forum/topic/86253-1152-layerutil-layers-traits