The option nodes near coords is probably what you are looking for:
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={Temperature dependence of CuSO(_4\cdot)5H(_2)O solubility},
xlabel={Temperature [\textcelsius]},
ylabel={Solubility [g per 100 g water]},
xmin=0, xmax=100,
ymin=0, ymax=120,
xtick={0,20,40,60,80,100},
ytick={0,20,40,60,80,100,120},
legend pos=north west,
ymajorgrids=true,
grid style=dashed,
]
\addplot[
color=blue,
mark=square,
nodes near coords,
node near coord style={below right}
]
coordinates {
(0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)
};
\legend{CuSO(_4\cdot)5H(_2)O}
\end{axis}
\end{tikzpicture}
\end{document}

According to your comments, you have more information related to each of the coordinates than just the x and y values. I would suggest that you use a table instead of a list of coordinates, because it is much easier then to add all the information as labels:
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={Temperature dependence of CuSO(_4\cdot)5H(_2)O solubility},
xlabel={Temperature [\textcelsius]},
ylabel={Solubility [g per 100 g water]},
xmin=0, xmax=100,
ymin=0, ymax=120,
xtick={0,20,40,60,80,100},
ytick={0,20,40,60,80,100,120},
legend pos=north west,
ymajorgrids=true,
grid style=dashed,
]
\addplot[
color=blue,
mark=square,
nodes near coords={$\pgfmathprintnumber\yvalue$ \
$C$: $\pgfmathprintnumber\cvalue$ \
$R$: $\pgfmathprintnumber\rvalue$ \
$S$: $\pgfmathprintnumber\svalue$},
visualization depends on={y \as \yvalue},
visualization depends on={\thisrow{c} \as \cvalue},
visualization depends on={\thisrow{r} \as \rvalue},
visualization depends on={\thisrow{s} \as \svalue},
node near coord style={font=\scriptsize, align=left},
coordinate style/.condition={
\coordindex!=1 && \coordindex!=3
}{below right},
]
table {
x y c r s
0 23.1 600 200000 200
10 27.5 600 200000 200
20 32 600 200000 200
30 37.8 600 200000 200
40 44.6 600 200000 200
60 61.8 600 200000 200
80 83.8 600 200000 200
100 114 600 200000 200
};
\legend{CuSO(_4\cdot)5H(_2)O}
\end{axis}
\end{tikzpicture}
\end{document}

The same, but without the y values and with non-scientific number formatting:
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={Temperature dependence of CuSO(_4\cdot)5H(_2)O solubility},
xlabel={Temperature [\textcelsius]},
ylabel={Solubility [g per 100 g water]},
xmin=0, xmax=100,
ymin=0, ymax=120,
xtick={0,20,40,60,80,100},
ytick={0,20,40,60,80,100,120},
legend pos=north west,
ymajorgrids=true,
grid style=dashed,
]
\addplot[
color=blue,
mark=square,
nodes near coords={$C$: $\pgfmathprintnumber[fixed]\cvalue$ \
$R$: $\pgfmathprintnumber[fixed]\rvalue$ \
$S$: $\pgfmathprintnumber[fixed]\svalue$},
visualization depends on={\thisrow{c} \as \cvalue},
visualization depends on={\thisrow{r} \as \rvalue},
visualization depends on={\thisrow{s} \as \svalue},
node near coord style={font=\scriptsize, align=left},
coordinate style/.condition={
\coordindex!=1 && \coordindex!=3
}{below right},
]
table {
x y c r s
0 23.1 600 200000 200
10 27.5 600 200000 200
20 32 600 200000 200
30 37.8 600 200000 200
40 44.6 600 200000 200
60 61.8 600 200000 200
80 83.8 600 200000 200
100 114 600 200000 200
};
\legend{CuSO(_4\cdot)5H(_2)O}
\end{axis}
\end{tikzpicture}
\end{document}

nodes near coordsis probably what you're after. Add this option to the options of the\addplotmacro. – Jasper Habicht Feb 21 '23 at 17:13