When I looked into this, I was surprised to see that there was no single tool that accomplished this task. However, using 3.18, this can be solved with two tools:
Assume that the point layer has a field "type", as described in the original post. Additionally, assume that the polygon layer has a field named "poly_code", where each polygon has a unique value (for example A, B, C...).
Use the Intersection tool, where the Input Layer = your point layer and the Overlay layer = your polygon layer.
The resulting output will be a new point layer containing the two input fields, "type" and "poly_code". In other words, each point now contains the attributes from the matching polygons they fall within.
The final task is to count the number of points, by "type", within each polygon. This is accomplished using the Processing Toolbox > Statistics by Categories tool, where the Input Vector Layer = the output point layer from the Intersection tool, and within the Field(s) with Categories option, both "type" and "poly_code" are checked on.
Voila! The output table now contains a count for each "type" by "poly_code" combination.