I'm not sure if some client supports this but at least in theory you could start downloading the blockchain only from a certain block number. As the contract (most likely) won't have transactions into it before it was created you only need to check blocks after that.
If you're saying that the blockchain is several terabytes in size then you must mean an archival node (https://etherscan.io/chartsync/chainarchive). That's the most disk space consuming mode and is mostly useless data for typical scenarios. The typical synchronization mode is fast sync which takes a lot less space - currently around 200GB (https://etherscan.io/chartsync/chaindefault). Different clients offer also even more optimized synchronization modes (such as Geth's light sync) but they are limited in what data they offer.
But in any case I don't think there is any way to only download some of the data inside blocks. You have to download a whole block at a time. Once you have downloaded the block you can do all sorts of analysis on it and discard it and/or extract needed information from it and continue on to the next block. This means changes into the client's (node's) code implementation.