It is a similar error over and over. Missing some closing brackets with every item with the display tag. Most likely one error which was copied/pasted.
The first dragon egg:
sell:{id:"dragon_egg",Count:1,tag:{display:{Name:"&c&lDragon Egg",Lore:["Used in shops","It is a currency"]}
Minus the data:
sell:{...,tag:{display:{...,Lore:[...]}
You have 3 opening curly brackets and only one closing. Every item which has a name and lore has this same mistake.
Here is the corrected command:
/summon Villager ~1 ~ ~ {Profession:2,CustomName:"Apollos",CustomNameVisible:1,Career:1,CareerLevel:42,CanPickUpLoot:0,PersistenceRequired:1,NoAI:1,Invulnerable:1,Attributes:[{Name:"generic.knockbackResistance",Base:"1f"},{Name:"generic.movementSpeed",Base:"0f"},{Name:"generic.maxHealth",Base:99999}],Offers:{Recipes:[{buy:{id:"diamond_block",Count:12},buyB:{id:"diamond",Count:5},maxUses:9999999999,sell:{id:"dragon_egg",Count:1,tag:{display:{Name:"&c&lDragon Egg",Lore:["Used in shops","It is a currency"]}}},rewardExp:false},{buy:{id:"dragon_egg",Count:1,tag:{display:{Name:"&c&lDragon Egg",Lore:["Used in shops","It is a currency"]}}},maxUses:9999999999,sell:{id:"diamond_block",Count:8},rewardExp:false},{buy:{id:"nether_star",Count:4},maxUses:9999999999,sell:{id:"dragon_egg",Count:1,tag:{display:{Name:"&c&lDragon Egg",Lore:["Used in shops","It is a currency"]}}},rewardExp:false},{buy:{id:"obsidian",Count:64},maxUses:9999999999,sell:{id:"nether_star",Count:1},rewardExp:false},{buy:{id:"obsidian",Count:64},buyB:{id:"obsidian",Count:64},maxUses:9999999999,sell:{id:"fire_charge",Count:1,tag:{display:{Name:"&c&lEmber",Lore:["Used in shops","It is a currency"]}}},rewardExp:false},{buy:{id:"fire_charge",Count:2,tag:{display:{Name:"&c&lEmber",Lore:["Used in shops","It is a currency"]}}},maxUses:9999999999,sell:{id:"dragon_egg",Count:1,tag:{display:{Name:"&c&lDragon Egg",Lore:["Used in shops","It is a currency"]}}},rewardExp:false},{buy:{id:"dragon_egg",Count:1,tag:{display:{Name:"&c&lDragon Egg",Lore:["Used in shops","It is a currency"]}}},maxUses:9999999999,sell:{id:"fire_charge",Count:2,tag:{display:{Name:"&c&lEmber",Lore:["Used in shops","It is a currency"]}}},rewardExp:false}]}}
It succeeds and produces the villager. One note though, color codes do not work on item names:
For future problems like this, I recommend putting the command into an editor with a search/find ability. This allows you to copy the portion of the text from the error and find it in the command. From there you can try to figure out what is wrong.
You can also use tools to format the command to spot any possible missing formatting within the command. One such tool is at http://jsonviewer.stack.hu/. Simply copy/paste your command into it and click format.
As an example, here is the Attributes section of your command:
Attributes: [
{
Name: "generic.knockbackResistance",
Base: "1f"
},
{
Name: "generic.movementSpeed",
Base: "0f"
},
{
Name: "generic.maxHealth",
Base: 99999
}
]
Update after comment, I played with the work around to create a path to a villager who sells the items with colored names. I was able to make it work with your command.
The way this works is a bit complicated. This command gives the nearest player a command sign. Place the sign and click it. The sign runs a setblock command which sets a command block in it's position with a command. That command is your command only with colored names. It uses the JSON color codes in the click event of the command sign.
Here is the command:
/give @p sign 1 0 {BlockEntityTag:{Text2:"{\"text\":\"Click\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~ ~ command_block 2 replace {Command:\\\"/summon Villager ~1 ~ ~ {Profession:2,CustomName:\\\\\\\"Apollos\\\\\\\",CustomNameVisible:1,Career:1,CareerLevel:42,CanPickUpLoot:0,PersistenceRequired:1,NoAI:1,Invulnerable:1,Attributes:[{Name:\\\\\\\"generic.knockbackResistance\\\\\\\",Base:\\\\\\\"1f\\\\\\\"},{Name:\\\\\\\"generic.movementSpeed\\\\\\\",Base:\\\\\\\"0f\\\\\\\"},{Name:\\\\\\\"generic.maxHealth\\\\\\\",Base:99999}],Offers:{Recipes:[{buy:{id:\\\\\\\"diamond_block\\\\\\\",Count:12},buyB:{id:\\\\\\\"diamond\\\\\\\",Count:5},maxUses:9999999999,sell:{id:\\\\\\\"dragon_egg\\\\\\\",Count:1,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lDragon Egg\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},rewardExp:false},{buy:{id:\\\\\\\"dragon_egg\\\\\\\",Count:1,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lDragon Egg\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},maxUses:9999999999,sell:{id:\\\\\\\"diamond_block\\\\\\\",Count:8},rewardExp:false},{buy:{id:\\\\\\\"nether_star\\\\\\\",Count:4},maxUses:9999999999,sell:{id:\\\\\\\"dragon_egg\\\\\\\",Count:1,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lDragon Egg\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},rewardExp:false},{buy:{id:\\\\\\\"obsidian\\\\\\\",Count:64},maxUses:9999999999,sell:{id:\\\\\\\"nether_star\\\\\\\",Count:1},rewardExp:false},{buy:{id:\\\\\\\"obsidian\\\\\\\",Count:64},buyB:{id:\\\\\\\"obsidian\\\\\\\",Count:64},maxUses:9999999999,sell:{id:\\\\\\\"fire_charge\\\\\\\",Count:1,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lEmber\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},rewardExp:false},{buy:{id:\\\\\\\"fire_charge\\\\\\\",Count:2,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lEmber\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},maxUses:9999999999,sell:{id:\\\\\\\"dragon_egg\\\\\\\",Count:1,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lDragon Egg\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},rewardExp:false},{buy:{id:\\\\\\\"dragon_egg\\\\\\\",Count:1,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lDragon Egg\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},maxUses:9999999999,sell:{id:\\\\\\\"fire_charge\\\\\\\",Count:2,tag:{display:{Name:\\\\\\\"\\u00A7c\\u00A7lEmber\\\\\\\",Lore:[\\\\\\\"Used in shops\\\\\\\",\\\\\\\"It is a currency\\\\\\\"]}}},rewardExp:false}]}}\\\"}\"}}"}}
It looks a little weird but it does work. All of the escape slashes are required.
An image of the color name:
However, I do not recommend using colored names with your currency items as this will require all future commands that use these items to have the same level of complication.