Is there some $f:\mathbb{R}\to\mathbb{R}$ differentiable at every point such that $\forall x$, the tangent to $f$ at $(x,f(x))$ intersects the graph of $f$ at $2$ points (counting (x,f(x)))?
This problem is delicate, as shown by the example $f(x)=x^3$, where the condition only fails at $x=0$.
Remark: if $f$ is $C^1$, then the function $g:\mathbb{R}\to\mathbb{R}$ which sends $x$ to the only point $y$ such that $(y,f(y))$ is in the tangent line to $x$ seems to be continuous at almost every point. I could not use this effectively though, in the non continuous case maybe you could get some weak version of this using the intermediate value property of the derivative?

No $f$ as in the question exists.
Suppose $f$ is as in the statement of the question.
We can suppose that $f(0)=f'(0)=f(1)=0$ and $f>0$ in $(0,1)$ composing $f$ with affine functions or adding affine functions to it. $(*)$
We can then take $a\in(0,1)$ such that $f(a)$ is maximal and let $b\neq a$ with $f(b)=f(a)$. Then $b$ cannot be inside the interval $(0,1)$: in that case, the tangent at the point $c$ of the interval between $a$ and $b$ such that $f(c)$ is minimal cuts the graph of $f$ in at least $3$ points. There are two options for $b$.
If $b>1$, we can find a contradiction: in this case $f(1)=0$ is a local minimum of $f$. Now using the fact that for any $\varepsilon$ there is some $x\in(0,\varepsilon)$ with $f'(x)\in(0,\varepsilon)$ (you can prove it using that $f(0)=f'(0)=0$ and $f(x)>0$ in $(0,1)$), we can find a small $x>0$ such that its tangent line intersects the graph of $f$ at two points near $(1,0)$.
So $b<0$ and $f$ does not have a local minimum at $1$. The graph of $f$ would look something like this:
We have two cases:
Case 1: $f'$ is continuous.
Consider the point $c\in[0,a]$ such that $f'(c)$ is the highest possible, you can check that the tangent to $f$ at $c$, $l_c$, only intersects the graph at $(c,f(c))$. Indeed, if $(d,f(d))$ was another point in $l_c$, we can consider two cases.
$d\in(0,a)$. Then there has to be some number $e$ between $c$ and $d$ with $f'(e)>f'(c)$, a contradiction.
$d>a$ cannot happen either because the tangent line to $c$ passes above $(a,f(a))$ and $f(x)<f(a)\forall x>a$. A similar argument works for $d<0$.
Case 2: $f'$ is not continuous.
We can suppose that $f'$ is not continuous at $0$ in this case, using a point with discontinuous derivative in $(*)$.
As $(1,0)$ is not a local minimum, there exists some $\varepsilon_1>0$ such that $(-\varepsilon_1,\varepsilon_1)\subseteq f([a,1.1])$ $(**)$.
As $f'$ is not continuous at $0$ and using the intermediate value property of the derivative, for small enough $\varepsilon>0$ there is a sequence $x_n\to 0$ with $\varepsilon<|f'(x_n)|<2\varepsilon$. Let $l_n$ be the tangent line at $x_n$. Then, if we pick $\varepsilon$ small enough, for big enough $n$ the lines $l_n$:
Pass below the points $(b,f(b))$ and $(a,f(a))$.
Intersect the graph of $f$ at some point of the rectangle $[a,1.1]\times(-\varepsilon_1,\varepsilon_1)$, due to $(**)$
We can consider two cases. If $f'(x_n)<0$ for infinitely many $n$, then take some $x\in (-0.1,0)$ with $|\frac{f(x)}{x}|<\varepsilon$. Then for big enough $n$, $l_n$ intersects the graph of $f$ at some point between $b$ and $x$, which is a contradiction. If $f'(x_n)>0$ for infinitely many $n$, take $x\in (0,a)$ with $\frac{f(x)}{x}<\varepsilon$ and for big enough $n$, $l_n$ intersects the graph at some point between $x$ and $a$, so we have a contradiction again.