If you don't specify a config group, the configuration will be loaded into a group with the same name as the file. Which in this case is "themes::themes", not "themes".
If you want to load the config file into the "themes" group, use:
'config' => array(
'themes::themes' => 'themes',
),
And the parser's Twig extension class already contains an entry to access config items, called 'config'. So no need to define your own extension.
The question is, where is it loaded into? This is called the 'config group', which basically is the first part of the config key.
If you don't specify a group name (like you did) in always_load, it will be loaded into the group with the same name as the config file. This can be compared to Config::load('themes', true);
So in your original load:
'config' => array(
'themes::themes',
),
You need to use
Config::get('themes::themes.test')
Since you didn't specify a group name (so the group name equals the config file name). If you change your always_load to what I suggested
'config' => array(
'themes::themes' => 'themes',
),
You can use
Config::get('themes.test')
like you want to...
p.s. if so specify something that doesn't exist, you'll get a "file not found" ConfigException.