Ok, I believe I see why it's not working. The substitutions in CBSubs are always trying to be against the viewing user. In this case they're against the user approving the registration not the user being approved. Try making the following changes in your Custom HTML field and now see if your Custom HTML field works fine in your CB Auto Actions email.
FROM
Expiration Date: [cbsubs:subscriptions plan="2" output="expiry_date" /]
Plan Price: [cbsubs:plans plan="2" output="price" /]
TO
Expiration Date: [cbsubs:subscriptions user="#displayed" plan="2" output="expiry_date" /]
Plan Price: [cbsubs:plans user="#displayed" plan="2" output="price" /]
If that doesn't work the following will work in CB Auto Actions directly, but not in your Custom HTML field.
Expiration Date: [cbsubs:subscriptions user="[action_user]" plan="2" output="expiry_date" /]
Plan Price: [cbsubs:plans user="[action_user]" plan="2" output="price" /]
[action_user] is a special substitution in CB Auto Actions that directly inserts the auto action user id into contents before any substitution processing. This reason for having to do this is CBSubs substitutions don't support nesting yet, which means we can't do user="[user_id]" for example currently.