Faccio un esempio. Hai un documento a una colonna: in questo caso \textwidth e \columnwidth coincidono sempre, mentre linewidth dipende dall’ambiente in cui ti trovi.
Se ti trovi nel testo normale allora \linewidth è uguale agli altri, se invece di trovi dentro una lista o una scatola \linewidth è diverso dagli altri due. Esempio tipico è una minipage larga ad esempio .5\textwidth. Dentro la minipage \linewidth è pari a .5\textwidth mentre \textwidth e \columnwidth con cambiano.
Se tu vuoi mettere una figura in corpo dentro una lista (che di solito ha dei margini rientrati rispetto al normale) è meglio usare \linewidth.
Detto questo, nel posizionare le immagini conviene sempre usare \linewidth.
Se usando wrapfig scrivi
`\begin{wrapfigure}{l}{0cm}
\includegraphics[width=\linewidth]{…}
\caption{dida}
\end{wrapfigure}`
in questo caso \linewidth=\textwidth poiché con 0cm non hai specificato la larghezza della finestra e quindi il pacchetto riempie tutta la larghezza della pagina con la figura.
Se cambi 0cm con 5cm allora \linewidth=5cm e la figura è larga 5cm.
In definitiva \linewidth è la larghezza locale e variabile della linea, mentre gli altri due sono globali e immutati per tutto il documento a meno che non si usano paccchetti tipo multicol che modifica \columnwidth.
Ultimo esempio. Tabella con specificatore p{6cm} per una colonna. Dentro questa colonna \linewidth=6cm mentre \textwidth resta invariato.
Spero di essere stato chiaro.
Ciao
Andrea