Serial links can run at different speed. There are five serial synchronous types 232 X21 V35 etc and they run a finite list of speeds. There is also asynchronous serial at low speeds.
Other circuits E1 E3 run at a fixed speed but you can partition (sub-rate) them and switch partitions off so can also run at a choice of speeds.
Synch sends a block of data but asynch individual characters.
Synch has a special header whereas async uses two bits to know the character is next.
Simply put, synchronous has clocking and asynchronous does not.
Ideally yes, the "clock rate" command will set the speed of the a serial link if the interface is set as the DCE. Normally though the Cisco interface is DTE, which derives the clock rate or speed from the device connected to the port.
For example, in satellite communications the router port connects to a satellite modem. You set the data rate for the link in the satellite modem. The satellite modem acts as the DCE device and sends the clocking information to the router. If you connect the router to the satellite modem with a V.35 DTE cable you can do a "sh controller s0/0" and see the interface identified as DTE and TX & RX clock detected. This is also true if you connect the router to an external CSU/DSU. The CSU/DSU acts as the DCE device and the router the DTE.
In the case of T1/E1 with built-in CSU/DSUs, the number of channels selected determine the "data rate" or "bandwidth" for the link, but the clocking on a T1/E1 is always 1.544Mbps/2.048Mbps respectively. The number of channels selected say 12 for a T1 circuit, means that the data rate is 768kbps. This would be the same as the bandwidth of the link and you should set the bandwidth on the interface to always match the actual data rate being sent. This is to ensure the proper metric is calculated if dynamic routing protocols are used and also to ensure the proper bandwidth and percentages are calculated in the event QoS is configured on the link.
Hope this helps.
Synchronous - imposition of speeds and both devices will try to use the same speeds and adjust accordingly
asynchronous type - both devices agree to speed but there is no checking or adjustment of speed by any device.