If you are adding worker nodes to a cluster, as long as k8s and docker versions are the same, can you use different operating systems and different versions? I would think you are able to as long as the k8s pieces used within the OS are the same, but I have not tested this.
Yes, a cluster can be heterogeneous with worker nodes of different operating systems. The services running on worker nodes are container runtime, kubelet and kube-proxy which should be compatible with the control plane version. You also need to make sure the CNI plugin is compatible with different operating systems in the cluster.
Yes this is possible.
As you have not tested this you can possible refer this on official kubernetes documentation on how to add a windows based node to a cluster where control plane linux base.