Counting occurrences of "A…Z" substrings
The second solution seems to be clearer and more efficient.
In both cases, a few details can be improved:


variable names
removing useless whitespaces
removing useless parenthesis
removing useless tests (no need to call find before calling count)
using the start parameter of count (suggestion of @SolomonUcko).


You'd get something like:

def substring_counter(string):
    counter = 0
    for num, c in enumerate(string):
        if c == 'A':
            counter += string.count('Z', num)
    return counter

def substring_counter2(string):
    counter = 0
    nb_a = 0
    for c in string:
        if c == 'A':
           nb_a += 1
        elif c == 'Z':
           counter += nb_a
    return counter