Yes, you can have a domain name purchased with a registrar and have the site hosted somewhere else. Registration and hosting are 2 different things, and most hosting companies are not registrars; they deal with another company to purchase their domain names.
What a domain name does is to say "website a.com" = "IP 126.96.36.199".
How do I go about doing this? Can I leave the domain with whois and just make it send visitors to my normal hosting provider without the url changing?
On whois, you'll have to configure the DNS so that the domain name points to your hosting server.
Or do I have to transfer it and if so how long does that take?
You can transfer it, but it depends on the situation. If whois is cheaper and you don't mind managing both accounts, then you can keep both.
If I take GoDaddy as an example as they are both a hosting company and a registrar, when you transfer a domain name to them they will add a year of the domain name at their price, then continue to renew it at their price for the following years.
Transfering hosting and transfering a domain name are 2 separate things.