Can the time it takes for a packet to be transmitted from a client to the server fluctuate?
The IP protocol, atop which TCP and UDP are constructed, specifies that datagrams are neither guaranteed to arrive in order, nor via the same route, nor, for that matter, at all (thanks Trevor for the reminder). So, irrespective of whether TCP or UDP is used, latency will fluctuate. Latency is partly due to distance travelled, which changes if the path changes, and partly due to protocol stack translation on the routing devices along the chosen path -- which also change if the path changes.
This is part of the self-repairing nature of the internet, enabling it to do what it does every day: if one route becomes less suitable according to heuristics programmed into various routing devices along the way, another route will be chosen instead. This can be either momentary, or long-term. Remember that before it was the internet, it was the ARPANET -- a defense network designed to deal with eg. the instant removal of vast sections of the network (think nuclear warfare), without the network as a whole going down. By routing around damaged or otherwise non-ideal areas, the greater network continues to function (albeit, perhaps, suboptimally).
This is probably not game development question, but yes. In normal IP connection, each packets may go through different intermediary "hops", and each different "hops" may have different latency.
If you're using TCP to transfer your data, the protocol abstracts that for you and will reorder packets to deliver the packets in the order they were originally sent; however if you're using UDP, the packets can and do arrive out of order, depending on the latency of each individual packets.
Absolutely everything about an IP network can change at any time.
The following article discusses how things like latency, packet loss, and throughput can vary and why: DEI Tech Note 0021: Loss, Latency, and Speed