This is possible using Mico's selnolig package. It is on CTAN, and added to TeX Live and MikTeX. selnolig requires the document to be compiled with lualatex, but that wouldn't keep you from using your fonts; indeed, it is pretty similar to xelatex in usage.
(Btw, microtype is available for LuaTeX -- most of its functions -- but it cannot selectively deactivate ligatures. That's why selnolig was created.)
In this MWE, I load selnolig without either of its language options (it can deal with German and English), so it only gets rid of ligatures where I tell it to with \nolig rules. Since I don't have the Adobe Caslon Pro OTF fonts, I used Linux Libertine, which has the ⟨st⟩ and ⟨ct⟩ ligatures in its Historical set.
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={Historical}}
\setmainfont{Linux Libertine O}
\usepackage{selnolig}
\nolig{st}{s|t}
\begin{document}
best pact
\end{document}

Just as a comparison, here's the output without selnolig:

selnolig's main purpose is to automatically suppress ligatures across morpheme boundaries in German and English texts. Its documentation explains all about how to use it (and how to use lualatex, if you'd like some pointers there).
See also New package, selnolig, that automates suppression of typographic ligatures on Meta.
selnolig, definitely not. It depends onlualatexinternally. – doncherry Nov 27 '17 at 14:01