What is the difference between variable ratio matching and fixed ratio 1: n matching with a caliper What is the difference in the underlying procedure between the two?
For fixed ratio matching with a caliper, would the caliper be applied after fixed ratio 1: n matching? If so, would it result in variable number of controls matched to each treated?

This of course will depend on the software you use. I'll discuss the methods broadly and then their implementation in the MatchIt for R.
In fixed $k$:1 matching with a caliper, each treated unit receives $k$ matches or as many matches are in the caliper, whichever is smaller. For example, for 4:1 matching, one treated unit may receive 4 matched controls if 4 or more are within its caliper. Another treated unit may only receive 2 matched controls if only 2 are within its caliper. Another treated unit may receive no matches if no control units are within its caliper. If doing matching without replacement, one reason there may not be many control units within a treated unit's caliper is that control units have already been used up as matches for other treated units.
In variable ratio matching, each treated unit receives a different number of matches. How the number of matches to allocate to each unit is decided depends on the algorithm used. You don't need a caliper for this method, though. One method of variable ratio matching is called "extremal" matching, as described by Ming and Rosenbaum (2000). They developed an algorithm for propensity score matching that guarantees an "optimal" allocation of control units to treated units. There is a formula that describes how many matches each treated unit receives. The formula makes it so that hard-to-match units receive fewer matches and easier-to-match units receive more matches.
In the MatchIt package, you can request variable ratio matching using the min.controls and max.controls arguments supplied to matchit(). These are the two arguments required for extremal matching. When method = "nearest" for nearest neighbor matching, Ming and Rosenbaum's algorithm is used. When method = "optimal" for optimal matching, the optimizer automatically finds the right number of matches for each treated unit to minimize the within-pair distances. It turns out that when using the propensity score, optimal matching finds the same allocation as nearest neighbor matching does using Ming and Rosenbaum's algorithm, which is further evidence that the algorithm is optimal. A benefit of the optimal matching approach is that distance measures other than the propensity score difference, such as the Mahalanobis distance, can be used.
If you use the Matching package, you may find something similar to variable ratio matching. If two control units are equally close to a treated unit, they will both be matched to it, even if you only request 1:1 matching. This creates a variable ratio match because treated units receive different numbers of matches. This behavior is controlled by the ties option; setting it to FALSE prevents this from occurring. Ties are actually very rare when you have continuous covariates, but in Matching, the distance.tolerance argument can be set so that two control units that are each within some threshold of a treated unit will be considered tied. Setting distance.tolerance = 0 removes this behavior.
Variable ratio matching doesn't require a caliper. The number of matched controls depends on an algorithm that aims to optimize a criterion (either theoretically or empirically). Fixed $k$:1 matching with a caliper may happen to yield a variable number of matches for each unit, but that is determined by how many matches fall within a treated unit's caliper. It's possible for some units to receive no matches. Though both methods may end up yielding a variable number of control units matched to each treated unit, this is intentional in the case of variable ratio matching and incidental in the case of fixed k:1 matching with a caliper.

Ming, K., & Rosenbaum, P. R. (2000). Substantial Gains in Bias Reduction from Matching with a Variable Number of Controls. Biometrics, 56(1), 118–124. https://doi.org/10.1111/j.0006-341X.2000.00118.x
