You don't open a USB port to get a PC to talk to an Arduino.If using libusb you do.
That is the entire point of libusb.
You open a connection to a device bulk end point and push data at it.
It is Host USB (PC) talking to Device USB (the leonardo) directly over USB.
To get a feel for libusb and the API functions, have a look at the documentation here:
http://libusb.sourceforge.net/doc/If you google you can find lots of information out there on libusb
The challenge when using the Arduino environment is going to be that it has no debugging environment
The only way that is typically used is sending character data (printed messages)
from the Arduino board over a serial or virtual serial interface back to the host.
The default serial interface is named "Serial".
On Leonardo, that "serial" interface uses a virtual serial interface over USB.
But in this case, you can't use that because you will be using the USB for raw USB communication
If you had an AVR dragon, or a AVR ICE you could use Atmel Studio instead of the Arduino IDE
and have full source level debugging.
It can be done with the Arduino IDE (I've done it) but it is not easy to set up and I'm not sure
it could be done on Windows.
In the absence of source level debugging,
What you can do is use the USB for your libusb communication
and then use the real UART inside the 32u4 for your serial port.
It will be Serial1 instead of Serial.
RX will be pin 0 and TX will be pin 1.
You will need some sort of way to read the serial port data on the host.
Something like an FTDI cable or USB to TTL module.
If you have to build the code on the PC vs the teacher giving you pre-compiled
executables, then you are going to need to set up a build environment.
You will need compilers, libraries, binutils, editor, make, shell, revision control tools, etc...
Your teacher should be able to assist for that as I'm assuming the exercise is about
writing code to use USB communications using libusb vs how to locate and set up
all the needed tools to to create a build environment on Windows.
With linux, it is much simpler to do development since
all the tools are native and pretty much built in,
since unix was designed by developers to do development.
Hope that helped.