Windows slaves can be launched using SSH or JNLP. Linux slaves can be launched using SSH. For Windows slaves if launch method is SSH then image needs to be custom prepared with SSH server preinstalled.

When using JNLP launch, ensure following
1) Jenkins URL (Manage Jenkins --> configure system --> Jenkins Location)
    This URL needs to be reachable by slave, so make sure to configure firewall rules accordingly.
2) TCP port for JNLP slave agents (Manage Jenkins --> configure global security --> Enable security --> TCP port for JNLP slaves).

    This port needs to be reachable from slave launched using JNLP. It is suggested to use fixed port so that necessary firewall exceptions can be made.

    If Jenkins master is running on Azure then open endpoint for "TCP port for JNLP slave agents" and also add necessary firewall (Run --> firewall.cpl) rules inside virtual machine.