  We study a wide spectrum of incidence problems involving points and curves or
points and surfaces in $\mathbb R^3$. The current (and in fact the only viable)
approach to such problems, pioneered by Guth and Katz [2010,2015], requires a
variety of tools from algebraic geometry, most notably (i) the polynomial
partitioning technique, and (ii) the study of algebraic surfaces that are ruled
by lines or, in more recent studies [Guth-Zahl 2016], by algebraic curves of
some constant degree. By exploiting and refining these tools, we obtain new and
improved bounds for numerous incidence problems in $\mathbb R^3$. In broad
terms, we consider two kinds of problems, those involving points and
constant-degree algebraic \emph{curves}, and those involving points and
constant-degree algebraic \emph{surfaces}. In some variants we assume that the
points lie on some fixed constant-degree algebraic variety, and in others we
consider arbitrary sets of points in 3-space. our results provide a "grand
generalization" of most of the previous studies of (special instances of)
previous works for both curves and surfaces.
  As an application of our point-curve incidence bound, we consider the problem
of bounding the number of similar triangles spanned by a set of $n$ points in
$\mathbb R^3$, and obtain the bound $O(n^{15/7}),$ thus improving the bound of
Agarwal et al [2007].
  As applications of our point-surface incidence bounds, we consider the
problems of distinct and repeated distances determined by a set of $n$ points
in $\mathbb R^3$, two of the most celebrated open problems in combinatorial
geometry. We obtain new and improved bounds for two special cases, one in which
the points lie on some algebraic variety of constant degree, and one involving
incidences between pairs in $P_1\times P_2$, where $P_1$ is contained in a
variety and $P_2$ is arbitrary.
