So my guess is that the DisplayNameFor() method uses reflection
Not directly, I suspect. It's more likely that is uses ModelMetaData (which no doubt uses reflection eventually if you follow the trail).
For smaller views that we want to be rendered quicky can we just type the name of the property ?
You can. It might be ok for a fairly small and unchanging project but I wouldn't necessarily recommend it.
What is the cost of using reflection ?
I think you'll find it to be insignificant for most purposes. It's one of those cases in which it's not a concern unless it becomes a concern (duck, recursion!).
The greater concern is: Is reflection the best way to achieve my goal? I think that's the question you should be asking. Reflection is great fun (I know) but it's also a bit hard to read and can be hard to debug. That's why it's probably best to avoid it if there is an alternative. In this case there is: ModelMetaData.
What I mean by that is: do try to use HTML Helpers, and if they don't quite do what you want then try to extend them and create your own. Try to fall in love with Display Templates and Editor Templates and use them in conjunction with ModelMetaData.
The problem with using reflection in the Razor View is that you're putting the wrong things in the view. Views should be stupid - meaning they shouldn't have any logic in them or really be 'doing much' of anything. You just pass the views data and they'll display it for you.
I asked the (slightly related) question Are HTML helpers worth using with complex markup? which you might find interesting.