Although we thoroughly covered risk-neutral pricing in university I never fully understood it in the context of continuous-time processes.
But first of all, lets consider a discrete time example:
Here we want to evaluate the call option price $C_0$ with strike $K=100$. If the interest rate (until the option expiry) is $r=2\%$, then we need to solve $$\Delta\cdot S_u + \phi\cdot(1+r)=C_u$$ $$\Delta\cdot S_d + \phi\cdot(1+r)=C_d$$ for $\Delta,\phi$, which then gives $C_0 = \Delta\cdot S_0 + \phi \approx 10.6952$.
Here I can see how the real-world probaility $p$ $-$ and ultimately the real-world drift $-$ do not matter per se as we exactly replicate the option with the stock itself and some cash account.
But on the continuous side, things are not that simple. And I am just not sure why we would always use the risk-free $r$ as drift instead of the real drift $\mu$. For example, say we have 2 stocks that are exactly the same (same current price & volatility) but differ only in terms of their drift parameters $\mu_1,\mu_2$. Then a call option on stock 1 will have exactly the same price as a call option on stock 2 (given that strike and maturity are the same), because both would use $r$ as the "drift" for pricing. But if $\mu_1>\mu_2$ then everybody would want buy the call option on stock 1.
Any advice would be greatly appreciated.