This should allow you to find the number of words between and including you tags:
MY_LIST = ['[tag]', 'there', 'are', 'many', 'words', 'here', '[/tag]', '[tag]',
           'some', 'more', 'here', '[/tag]', '[tag]', 'and', 'more', '[/tag]']
def main():
    ranges = find_ranges(MY_LIST, '[tag]', '[/tag]')
    for index, pair in enumerate(ranges, 1):
        print('Range {}: Start = {}, Stop = {}'.format(index, *pair))
        start, stop = pair
        print('         Size of Range =', stop - start + 1)
def find_ranges(iterable, start, stop):
    range_start = None
    for index, value in enumerate(iterable):
        if value == start:
            if range_start is None:
                range_start = index
            else:
                raise ValueError('a start was duplicated before a stop')
        elif value == stop:
            if range_start is None:
                raise ValueError('a stop was seen before a start')
            else:
                yield range_start, index
                range_start = None
if __name__ == '__main__':
    main()
This example will print out the following text so you can see how it works:
Range 1: Start = 0, Stop = 6
         Size of Range = 7
Range 2: Start = 7, Stop = 11
         Size of Range = 5
Range 3: Start = 12, Stop = 15
         Size of Range = 4