Is an IP address assigned only to something with a Mac address?
Can an IP address be assigned to something without a Mac address?
If you want to send data over Ethernet: Yes.
You cannot send Ethernet packets to some device without a MAC address (such as an Ethernet HUB or a simple Switch).
What are "Other protocols don’t use MAC addresses and some have no addressing at all."?
Analogue modem connections are an example of a technology not using MAC addresses. They used PPP (or in the past: SLIP) to exchange IP packets over the telephone line.
How many IP addresses can be assigned to a Mac address?
At most one?
If you want to use the IP protocol, you need at least one IP address. (However, you can use Ethernet with other protocols instead of IP. In this case you don't need an IP address.)
One network card (MAC address) can have multiple IP addresses.
When "You can have multiple IP addresses per MAC", are the IP addresses used regardless of whether they are assigned to the same MAC or not?
Using multiple IPv4 addresses per network card is only done in a few, special scenarios.
For IPv6 however, in the most common scenarios, multiple IPv6 addresses are used per network card:
Each network card has exactly one "link-local" address which cannot be used if the data to be send has to pass a router. This address is typically used for sending network management data but it can be used as "regular" address, too.
The network card (and therefore MAC address) may have one or more "global" addresses for internet connections. Using more than one global address may be useful for privacy reasons.
The network card may have different "local" addresses if the computer is a member of different local networks.
What assigns IP address to a device?
You can manually assign IP addresses to the devices in the OS configuration. In the case of servers you should do this in any case.
Using SLAAC (IPv6) or APIPA (IPv4), the OS can automatically assign a (more or less) random IP address to the network card. This seems to be the most common variant for IPv6.
Using DHCP, a server can assign an IP address to some device. This is the most common variant for IPv4.