Config should be like a container for parameters, so you don't have to change constructors and setters whenever you change your mind about the parameters you want to pass. Making builder inherit config makes no sense, because builder isn't a config and "I need inherited methods" isn't a valid argument to implement this in your design. You could make config a member of the builder and call:
builder.getConfig().setA(a);
builder.getConfig().setB(b);
//...
builder.createResult();
If you want to have a template config, you'd make the builder template as well, for example:
template<class T>
class AlgoBuilder<T>{
//...
private:
AlgoConfig<T> config;
That way, you can set pass the config in the constructor.
About your question on missing the T parameter when instantiating the config... Well, at that point, since you want to set a, b ,c and all the other parameters, you already know the type of parameters, so you can actually instantiate the config with the T type, which is the same type of your parameters. AlgoConfig< AlgoConfig> doesn't make much sense to me.