If you play a sine wave too loud, you can damage speakers, but that’s more a function of the analog amplifier.
Typically, samples are passed to the soundcard using an integer sample format. I think it’s pretty rare for a USB soundcard to transmit floating point signals.
Integer format means there is an absolute hard limit on the sample values, because it is literally impossible to represent out of range samples. If your signal in SC goes outside of -1.0 … +1.0, then it will get squared off in the soundcard driver.
When a digital signal is squared off (clipped), the bandlimited waveform that passes through all the sample points must go outside the clipping level (the Gibbs effect). The analog output from this could be a few dB louder than you expect.
Now… If you’re constantly working right up to the maximum load that your speakers can handle, then either the speakers are too weak for your needs, or you’re working at a level that will cause hearing loss over time and you should turn down the amplifier. In the first case, there’s not much you can do to prevent speaker damage. In the second, working at a reasonable level will prevent speaker damage (that is, worry about your hearing and your speakers will be fine).
IMO, what is bad about clipping isn’t that it’s “bad for speakers.” It’s that clipping represents loss of information, and, post-clipping, there is no way to recover the shape that was squared off. So this is not good to do accidentally.
Btw the amplitudes of the high partials of a square wave drop off (odd partials, each partial’s amplitude is 1/k where k is the partial number). A 100 Hz square wave will have 1/100 the energy at 10 kHz, which shouldn’t be tweeter-killing.
An impulse has equal amplitude at all frequencies. This is potentially bad for hearing; I’d never use a Blip without some kind of low- or band-pass filter.
hjh