VirtualSMC.kext is a requirement - it emulates the SMC chip found on real macs, and convinces the OS that yes, this is a real Mac. Without it, no Hackintosh :(
- AppleIntelE1000e.kext - this works with older Intel LAN chipsets - but can cause KPs on newer chipsets
You'll want to grab USBInjectAll.kext. If you're on an H370, B360, and H310 Coffee Lake system, or an X79/X99/X299 you'll likely want to make sure to include the XHCI-unsupported.kext as well. As of 10.11, Apple has imposed a 15 port limit on each USB controller. This doesn't sound like a terribly imposing issue until you realize that each USB 3 port counts as 2 - one for USB 2, one for USB 3. On Skylake and newer builds where USB 2 and 3 are handled only on XHCI, and each USB 3 port counts as 2, this limit can be reached quickly. There is a way to route all USB 2 through EHCI though - utilizing RehabMan's FakePCIID.kext + FakePCIID_XHCIMux.kext (it only works on some chipsets though) which can take some of the pressure off the XHCI controller.
For Audio - you'll want to grab /u/vit9696's AppleALC.kext and the companion Lilu.kext - providing you have a supported codec. AppleALC is capable of patching AppleHDA.kext on the fly to allow for native audio with unsupported codecs. It also has a number of codec verbs built in to help with audio-after-sleep.
Apple is pretty minimal with their WiFi support, so I'll only cover the two main chipsets I'm familiar with. I've used a BCM94360CD + PCIe adapter, and BCM94352HMB/BCM94352Z in my Hackintoshes. The BCM94360CD worked OOB with no extras as it's a native card. For the BCM94352 flavors, I've been using AirportBrcmFixup.kext and the companion Lilu.kext for WiFi setup and BrcmBluetoothInjector.kext (on 10.13.6+) or BrcmPatchRAM2.kext alongside BrcmFirmwareData.kext - all of the Brcm* kexts are from RehabMan's OS-X-BrcmPatchRAM repo.
Depending on the rest of your hardware - you may need more kexts as well, but this guide is designed to be a general foundation, so you'll have to rely on your google-fu for that.