1. In general, the newest stable kernels will support hardware with fewest bugs. But provided that SATA is compiled in, you shouldn't normally have any problems unless a) you have a hardware fault or b) you have a partiularly obscure SATA controller that has non-standard behaviour; I do not think this is common with SATA controllers.
2. Kernel documentation can generally be found in /usr/src/linux/Documentation. Note that support for a piece of hardware is rarely — if ever — removed, so you should find that each kernel version supports the same hardware as pervious versions/releases, possible with additional support or tweaks added in.
4. Yes, quite easily. You need to have compiled-in support for SATA, your particular SATA controller, your particular PCI (or other bus) controller to which the SATA controller connects, and possibly even the partition table algorithm you're using (if you're not using a standard partition table).
You will also need to compile in support for the partition types for the partitions upon which reside the following directories reside: / /etc/ /usr/lib/modules. (e.g. if you have a ReiserFS root partition, and your / /etc and /usr/lib/modules directories are all on that partition, then you need to compile in support for ReiserFS).
Hope that helps,
—Robert J. Lee