(This may help you a bit but I do tend to rely on experience to tell me whether I need a particular feature or not so it's a bit hand-wavey.)
I'd suggest getting a working kernel first with Genkernel (I can't tell you how, though, as I've never used it) so that you can at least boot your system then having a go at configuring one yourself. If your kernel fails to boot, you can just choose the Genkernel one from the boot menu and have another go (if your kernel panics, its "dying words" are often a useful clue as to why).
When I'm configuring a kernel for a system for which I've not used built one before, I often start by reading the output of 'dmesg' from the installation media. That gives me a good "feel" for the overall system.
One thing to bear in mind is that the Gentoo minimal install ISO (at least as of the last time I used it) tends to load a metric shedload of unnecessary drivers - every SCSI and ATA controller and NIC under the sun, no matter how obscure, a bit like the old Windows NT installer - and some of them can be very verbose even if the hardware isn't present. (I've actually got a USB stick with a custom "runs on almost anything" Gentoo installation which has all the drivers I think I'm reasonably likely to encounter configured as modules and auto-loads the required ones via eudev hotplugging, which makes things much easier. I use this as my installation media these days, in addition to using it for diagnostics and suchlike.)
Having got an idea of what has been detected that way, 'lspci -v' is my next port of call for a list of PCI(e) devices; it will also tell you what driver is associated with each device if a driver has been loaded for it.
For onboard sensors, 'sensors-detect' will usually tell you the right drivers to use. You'll need the "/dev/port character device" (CONFIG_DEVPORT) and the "I2C device interface" (CONFIG_I2C_CHARDEV) for it to work fully.
Choosing the right audio codec driver is a little harder as most modern ones use 'snd-hda-intel' as their basic driver which will be shown by lspci but require an additional driver to actually do anything. If you happen to know that your board comes with, say, a Realtek codec (very common) then select that otherwise there's no harm in selecting them all as modules and seeing which ones get autoloaded. Your graphics card will need the HDMI audio codec driver to provide support for sound over the HDMI cable if you want that.
As for what to make a module and what to build in - I tend to build as little in as possible but that's a personal preference dating back to when I was running systems with so little memory that just unloading the floppy driver or whatever when I wasn't using it made a real difference (on-demand loading and automatic unloading of idle drivers were common then). It can still sometimes be handy to be able to unload and reload a driver, say if the hardware starts behaving oddly. At the other end of the spectrum, some people like to have everything built-in (some even disable module support altogether, if they don't need it for out-of-tree drivers like nvidia or virtualbox).
I'd suggest building in (rather than having as modules) at least the following:
- (VITAL!) the drivers necessary to access your root device: probably either NVMe if you're fortunate enough to have that or the SCSI subsystem & SCSI disk plus the driver for your SATA controller (almost certainly AHCI unless it's a very old system) or whatever you've got your SSD/HDD plugged into.
- (VITAL!) the filesystem driver for mounting your root device
- an I/O scheduler - BFQ is a good general-purpose one for desktop systems that maintains interactivity under load well
- the ACPI Processor driver is a good idea to ensure that thermal protection works properly
- the cpufreq governor and relevant driver (almost certainly acpi_cpufreq unless it's an old system) so it can take control as early as possible (I haven't tested recently but they never used to autoload either)
- the Packet Socket networking driver - it's needed right from the start and lots of things will go screwy if it doesn't get loaded for some reason
- assuming you're using a USB keyboard, the USB subsystem and controller drivers together with the HID bus and USB HID driver so you don't end up keyboardless if modules fail to load
- if you're using ECC RAM, I'd recommend having the EDAC subsystem and memory controller driver built-in
That's by no means an exhaustive list but it's the things that have bitten me on the backside in the past when I've forgotten them, plus a few extras that came to mind.
I tend to start with the default config then turn off stuff I don't want and add extra things where needed in menuconfig. It's a little less laborious than starting with nothing at all configured (allnoconfig). There are a few places where you have to go back and revisit a part of the menus after going through everything once because stuff will sometimes deselect (or modularise) itself (or become available - or possible to deselect - as a result of later selections). The ones that spring to mind immediately are PCI MSI support (won't stop your system working but may hurt performance) and the SCSI subsystem and SCSI disk drivers.
I'd also suggest building in the microcode for your CPU. If you're on AMD then sys-kernel/linux-firmware includes the relevant files; for Intel, you can use sys-firmware/intel-microcode. Deciding which one to build in is fairly straightforward on AMD - just use the one relating to the processor family you have, eg. "amd-ucode/microcode_amd_fam15h.bin" for a Family 15h (FX-series) CPU. (The unadorned "amd-ucode/microcode_amd.bin" is for Family 10h.) On Intel, you need to look at the "cpu family", "model" and "stepping" values in /proc/cpuinfo; the hexadecimal equivalents will give you the filename, eg. family 6 model 15 stepping 11 corresponds with "intel-ucode/06-0f-0b".
Firmware relating to drivers configured as modules will be loaded as required from /lib/firmware. 'lshw' gives hints as to what firmware is used by different devices but the name it lists doesn't necessarily match the filename exactly (for example, lshw says "firmware=rtl8168f-1_0.0.5" for my NIC but the filename is actually "rtl_nic/rtl8168f-1.fw" if I wanted to build it into the kernel). The kernel will complain in dmesg (and tell you the file it wants) if firmware is missing. For most things, sys-kernel/linux-firmware will include the necessary files. Some hardware, especially wireless adaptors, may need other packages, though.
There's probably other stuff too but it's getting kind of late and my brain is trying to shut down for the night.
Good luck!