"Compile time" is when you build your code - when the compiler converts your source code into IL.
"Runtime" is when your code is executed - for ASP.NET, when a page request is made. (Personally I prefer the term "execution time" to distinguish between that and "the Common Language Runtime (CLR)" - aka the virtual machine.)
see this for more explanation about compile time vs runtime.
http://stackoverflow.com/questions/846103/runtime-vs-compile-time[
^]
And about value vs reference type:
Value type : It will hold the actual values. int, bool, float are value types
Reference type: it will hold the address to the values. string, objects are reference type.
To know more about value vs ref, you should know stack and heap and how data are saved.
Check this article to know about more.
Six important .NET concepts: Stack, heap, value types, reference types, boxing, and unboxing[
^]