How to customise (add properties to) existing Blender data?
You can use a CollectionProperty to store a variable amount of items like a list, the properties per item need to be declared beforehand:

import bpy

class VectorPropGroup(bpy.types.PropertyGroup):
    # name = StringProperty() # this is inherited from bpy.types.PropertyGroup
    vector = bpy.props.IntVectorProperty(size=3)

bpy.utils.register_class(VectorPropGroup)

bpy.types.Action.my_collection = bpy.props.CollectionProperty(type=VectorPropGroup)

action = bpy.data.actions.new("My Action")

item = action.my_collection.add()
item.name = "First"
item.vector = (1,2,3)

item = action.my_collection.add()
item.name = "Second"
item.vector = (2,3,4)

print(action.my_collection[0].name, action.my_collection[0].vector[:])
print(action.my_collection[1].name, action.my_collection[1].vector[:])


It will print:

First (1, 2, 3)
Second (2, 3, 4)


Note that you can't add() items from within a draw() method. You need to call it manually (text editor / Python console) or create an operator for the user to be used in a UI.