How does a Kernel provides different functionality to OS?
The OS would access kernel functionality via a system call interface.
In the x86 architecture the int instruction takes an interrupt number as an argument which it uses to generate a software interrupt to which an interrupt handler will respond to. The kernel would have its own interrupt number. The kernel knows what to do because there is a calling convention to follow when attempting to utilize a system call.
As an example, to open a file on an x86 Linux machine, one would place the integer 5 in the eax register (the system call number), a pointer to the filename string in register ebx, flags in register ecx, mode in register edx and then call the software interrupt with int $0x80. The kernel then services the system call and returns control back to the program. There are more efficient ways to access kernel services but they are OS specific.
Does it use the BIOS routines or use special device drivers for this, or something else?
Modern kernels would interface with hardware via device drivers.
how does it come to know which routine performs what because different BIOS vendors have different coding?
You interface with the BIOS via interrupts as well, except they would need to take place in "real" mode as opposed to the "protected" mode which CPUs typically operate in. Real mode is a 16 bit mode which gives software unlimited access to all addressable physical memory and peripherals. These are not BIOS specific but CPU architecture specific.
If not then what's the use for BIOS routines?
To be used during the initial boot process mainly.