Does TensorFlow execute entire computation graph with sess.run()?
Since Python code of TF only setups the graph, which is actually executed by native implementation of all ops, your variables need to be executed in this underlying environment. This happens by executing two ops - for local and global variables initialization:

session.run(tf.global_variables_initializer(), tf.local_variables_initializer())

On the original question - as far as I know - YES, it computes all the graph, and it requires you to feed placeholders, even if the executed op (in the session) is not dependent on them.
For example, when we compute a variable c as result = sess.run(c), does TF only compute the inputs required for computing c or updates all the variables of the complete computational graph?
Also, I don't seem to be able to do this:
c = c*a*b
as I am stuck with uninitialized variable error even after initializing c as tf.Variable(tf.constant(1)). Any suggestions?