Python 3, 8989 86 bytes
-2 thanks to Mr. Xcoder.
-3 inspiring from Asone Tuhid answer's.
lambda a,b:[i for i in rangesum(a,b)if sum(map(int,str(i)[:-3]))==sum==2*sum(map(int,str(i)[-3:]))]for i in range(a,b+1))
The range is half-open. The output numbers does not contains leading zeros.
Some tests Tests results :
Example 1 :
a = 10000
b = 11001
Lucky numbers : [1001, 1010]1
Example 2 :
a = 2000100000
b = 2100200000
Lucky numbers : [2002, 2011, 2020]5280
Example 3 :
a = 222000
b = 222100
Lucky numbers : [222006, 222015, 222024, 222033, 222042, 222051, 222060]
To count lucky numbers, also in 89 bytes :
lambda a,b:sum([sum(map(int,str(i)[:-3]))==sum(map(int,str(i)[-3:]))for i in range(a,b)])
Tests results :
Example 1 :
a = 1000
b = 1100
Lucky numbers : 2
Example 2 :
a = 2000 123456
b = 2100654321
Lucky numbers : 331607
Example 3 :
a = 2220000
b = 222100999999
Lucky numbers : 755252