Leaf names are, using ete2 language, node Faces. AttrFace instances, to be precise. The color and style of the text is not controlled by NodeStyle, but by the Face object itself.
from ete2 import Tree, TreeStyle, faces, AttrFace
def mylayout(node):
if node.is_leaf():
nameFace = AttrFace("name", fsize=30, fgcolor='red')
faces.add_face_to_node(nameFace, node, 0, position="branch-right")
nameFace.background.color = '#eeeeee'
nameFace.border.width = 1
t = Tree()
t.populate(10)
ts = TreeStyle()
ts.show_leaf_name = False # disable default leaf name drawing
ts.layout_fn = mylayout # set our custom config
t.show(tree_style=ts)
Check the tutorial and the reference guide, there plenty of examples.
cheers,
jaime