According to spec, USB 2.0 Full speed device can have maximum packet as below.
64 bytes - bulk endpoints
64 bytes - interrupt endpoints
1024 bytes - isoc endpoints
Yes, you can send only wMaxPacket with USB_LoadInEP(). You can use DMA with automatic memory management mode where this API triggers DMA instead of manually copying data from memory to USB buffer. You don't need to send zero length packet.