1) Beispielsweise mit dem keyword "above", am besten auch "inner sep" kleiner machen damit das weiße Ausfüllen nicht die Linie überschreibt.
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\tikzset{beschriftung/.style = {midway, above, sloped, fill=white, inner sep=1pt}}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[font=\small]
\begin{axis}[
width=12cm, height=10cm,
xmin=100, xmax=2000,
ymin=30, ymax=5000,
xlabel={x},
ylabel={y},
grid=both,
minor grid style={dotted, gray},
major grid style={solid, black},
xtick={100,150,200,300,400,500,800,1000,1500,2000},
ytick={30,50,100,150,200,300,400,500,800,1000,2000,3000,5000},
ticklabel style={/pgf/number format/fixed, /pgf/number format/precision=1},
scaled ticks = false,
axis background/.style={fill=white},
xmode=log,
ymode=log,
log ticks with fixed point,/pgf/number format/.cd,use comma,1000 sep={},
]
\addplot[black, thick] coordinates {(100, 150) (500, 30)} node[beschriftung] {0,15};
\addplot[black, thick] coordinates {(100, 200) (644, 30)} node[beschriftung] {0,15};
\addplot[black, thick] coordinates {(100, 300) (966, 30)} node[beschriftung] {0,15};
\end{axis}
\end{tikzpicture}
\end{document}
2) Geht so wie Du angefangen hast mit den font settings für "every node", am besten mit \tikzset:
\tikzset{every node/.style = {font=\small}}
Und beliebige Schriftbefehle, damit es gleich aussieht. Da die Schrift Deines restlichen Dokuments hier nicht gezeigt ist, kann ich keine Details nennen.