The `Manipulate` and the first `Plot` of your code don't work because you use a combination of `SetDelayed` (`:=`) and `ReplaceAll` (`/.`) that doesn't behave like you expected. 

When you have defined 

    g[t_, f0_, f1_, ff1_] := f[t] /. sol[[1]]
and now evaluate

    g[2, 1, 1, 1]
you get
>     f0 + 4 (-3 f0 + 3 f1 - ff1) + 8 (2 f0 - 2 f1 + ff1)

instead of the expacted
>     5

This happens because (due to the use of `:=`) `f[t]` on the rhs is evaluated as f[2] (giving `a + 4 c + 8 d`) and then the replacement (`/. sol[[1]]`) is done.