If I have a gigabit switch connected to three machines, two of which have Gigabit NICs and one of which has a 10/100 switch, will the traffic between the two fast machines be 100MBps or 1000Mbps?
No, the slow device will not slow down the network. The reason has to do with how a switch operates.
When a switch receives a message, it compares the destination MAC address to a table it keeps in memory. It then re-sends that message to the destination, using the correct port, and only the correct port.
If it makes it easier, you can think of it like this: HostA (1Gbps), HostB (1Gbps), HostC (100Mbps) all connected to the switch, creates these physical connections:
Now, if you consider the situation where HostA is communicating with HostC, you have to realize that while HostA can send data to the switch at 1Gbps, the switch can only send data to HostC at 100Mbps. So, essentially, the communication will be limited to 100Mbps.
Now, if you continue this reasoning, you can think of it like this:
Any communications with HostC will be slowed to 100Mbps, due to the Bottleneck
No, just the slow device gets a slow connection. Everything else is independent.
In the case a fast machine is talking to a slow machine the throughput of the slower connection will limit the two. But say Fast-A and Fast-B are communicating, they'll keep their fast speed with each other, even if they also communicate with Slow-C.