I've 3 lists. List B looks up List A and then I need to create a lookup in List C that lookups List B but also get values in List B that are lookups of List A.
How is this achievable?
There no problem to show additional fields of lookup list in List C. When you're adding lookup field to List C just select additional fields from List B that you want to show in List C.
You cannot do that, what you need to do is use a cascading lookup field (a custom field that enables filtering one lookup according to the value[s] selected in the parent loookup. Then you can set up two lookup columns in your Features list, the first looking up the Initiatives list, the other - Themes list. Once you select a value in the Initiative, only the relevant values are available in Theme.
An example of a field like this is http://infowisesolutions.com/product.aspx?id=ConnectedFields2007, but there are other solutions as well.