How are /dev/sda and /dev/sdb chosen?

The designation /dev/sda and /dev/sdb can be arbitrary as you can see.

From https://wiki.archlinux.org/index.php/Persistent_block_device_naming

If your machine has more than one SATA, SCSI or IDE disk controller, the order in which their corresponding device nodes are added is arbitrary. This may result in device names like /dev/sda and /dev/sdb switching around on each boot, culminating in an unbootable system, kernel panic, or a block device disappearing. Persistent naming solves these issues.

and Debian https://wiki.debian.org/Part-UUID

If you have more than one disk controller (IDE or especially SCSI/SATA), or even if you just have variable numbers of removable USB/firewire storage devices attached from day to day, the order in which they are detected may not be deterministic. The result is that device names like /dev/sda1 and /dev/sdb1 may switch around randomly on each boot. Persistent naming allows you not to worry about this at all.

For file systems it's best to use UUID (/dev/disk/by-uuid/) or labels (/dev/disk/by-label/). For raw drives or unformatted partitions you can use IDs (/dev/disk/by-id/).

To identify your disk/partition, use blkid

sudo blkid

The Ubuntu information is here: https://help.ubuntu.com/community/UsingUUID

It may be best to temporarily remove your windows hard drive while you install Ubuntu, then configure your windows partition(s) to mount post install. You can then select which OS to boot in your BIOS.