This is because it overlaps with the second occurence.
If you want all overlapping results, you must use the same pattern with the overlapped flag:
output = regex.findall(r'(?:'+probe+'){s<'+str(int(mismatches)+1)+'}', sequence, regex.BESTMATCH, overlapped=True)
If you want to know the sequence position:
for m in regex.finditer(r'(?:'+probe+'){s<'+str(mismatches+1)+'}', sequence, regex.BESTMATCH, overlapped=True):
print '%d: %s' % (m.start(), m.group())
As an aside comment: The limit with overlapping results
If I use these three parameters:
probe = "ACTG.*ACTG"
sequence = "ACTGTTGACATTGAACTGCATATAATACTG"
mismatches = 0
I will find only two results: ['ACTGTTGACATTGAACTGCATATAATACTG', 'ACTGCATATAATACTG']
instead of three. Because two results can not start at the same position in the string.