It's good to use AIC (or AICc) to help protect against overfitting as you state in your question and Mathematica code.
The example data you've given at first glance appears to have 6 well defined peaks but a fit (good or bad) with 6 gaussians can have 6 or fewer peaks with a peak defined where a predicted value has a slope of zero and positive slope just to the left of the associated predictor and a negative slope just to the right of the associated predictor.
Because of the iterative nature of the fitting, good starting values are essential. The other answers using FindPeaks for starting values assume that the ideal number of peaks matches the number gaussians. That's not the case with your dataset. Using AICc, the best fit (using multiple gaussians) has 7 gaussians and 6 resulting peaks. So while FindPeaks is extremely helpful when the "best" model using AICc has the same number of gaussians as peaks, that isn't the case in general.
So one might consider setting the number of peaks (which I don't believe one can set directly in FindPeaks - other than to set the threshold parameter that matches what one sees by eye) and then looking at the data to set initial values.
The fit with 6 gaussians has an AICc value of -320.859 (and you'll need to use NonlinearModelFit to get that summary statistic). The need for one more than 6 gaussians is that one sees a "shoulder" (between x=160 and x=166) possibly requiring another gaussian. Here is that fit:
(* Initial guesses *) nGaussians = 7; c0 = {165, 168, 172, 177, 185, 192, 197}; (* Middle of each gaussian kernel *) b0 = {1, 1, 1, 1, 1, 1, 1}; (* Spread *) a0 = {0.11, 0.27, 0.83, 0.06, 0.19, 0.12, 0.17}; (* Height *) inits = Join[Table[{a[i], a0[[i]]}, {i, 1, nGaussians}], Table[{b[i], b0[[i]]}, {i, 1, nPeaks}], Table[{c[i], c0[[i]]}, {i, 1, nPeaks}]] nlm7 = NonlinearModelFit[data, Sum[a[i] Exp[-(x - c[i])^2/b[i]^2], {i, 1, nGaussians}], inits, x] nlm7["AICc"] (* -429.1 *) Show[ListPlot[data], Plot[nlm7[x], {x, Min[data[[All, 1]]], Max[data[[All, 1]]]}]]

The AICc statistic is far lower for the 7-gaussian fit: a difference of 108.241. And values larger than 4 are considered important enough to take notice.
This fit has just 6 peaks and I assume you are interested in identifying the locations of the peaks. Here's code to do so:
(* Slope: we see 6 crossings at zero which identifies the locations of the peaks *) slope = D[nlm7[x], x]; Plot[slope, {x, 160, 200}]

(* Use above figure to obtain starting values *) peaks = x /. FindRoot[slope == 0, {{x, #}}] & /@ {167.9, 171.8, 177.1, 185, 192.2, 196.7} (* {167.899, 171.744, 177.142, 184.96, 192.146, 196.676} *) Show[ListPlot[data], Plot[nlm7[x], {x, 160, 200}], ListPlot[Table[{peaks[[i]], Sum[a[j] Exp[-(peaks[[i]] - c[j])^2/b[j]^2] /. nlm7["BestFitParameters"], {j, 1, 7}]}, {i, 1, 6}], PlotStyle -> Red]]

The peaks of the fitted curve do not necessarily occur in general at the estimated values of the $c$ parameters (although with your data that is the case - except for the left-most gaussian where there is no peak directly associated with that gaussian).
The next step (which I don't have time right now to do) is to obtain confidence intervals for both the peak locations and the associated height: any estimate should always have a measure of precision.
xoare not the peaks. The peaks and troughs are where the first derivatives are zero. $\endgroup$