That's just my opinion but I think most of the people here create their own kernels. Maybe you could grab something like Linux kernel and work with that, but you'll miss out most of the fun of developing your own OS. I wouldn't bother with booting with BIOS or UEFI directly at first. It's easier to start with something like GRUB. GRUB supports many ways of booting OS images. IMO, the most universal would be Multiboot.
As for tools. You'll need about the same tools that you would use for regular programming. Maybe with the exception of assembler. You will need to write some small parts in assembler. To create bootable multiboot USB disk image you'll need to use `grub-mkrescue` and `dd` commands.
https://wiki.osdev.org/Bare_bones describes how to use them.
I've just cobbled together some very basic bare bones kernel stub for x86. I was about to do it anyway. So feel free to make use of it.
https://github.com/pvc988/bare-bare-i386 It does not need any cross compiler in most cases.
My favorite combination is GRUB(loader) + YASM(assembler) + GCC(compiler) + Qt Creator(IDE) + GNU LD(linker) + GNU Make (build system) + QEMU(VM) + GDB(debugger).