Use list comprehension with flattening and loop all values without first for list of tuples, then pass it to DataFrame constructor:
b = [(x[0], y) for x in a for y in x[1:]]
df = pd.DataFrame(b, columns=['ID','itemNum'])
print (df)
ID itemNum
0 A7855 item1
1 A7855 item2
2 A7856 item3
3 A7856 item4
4 A7856 item5
If need only first values for ID column add if-else statement with enumerate for counter of lists:
b = [(x[0], y) if i == 0
else ('', y)
for x in a for i, y in enumerate(x[1:])]
df = pd.DataFrame(b, columns=['ID','itemNum'])
print (df)
ID itemNum
0 A7855 item1
1 item2
2 A7856 item3
3 item4
4 item5
And if need new column No add DataFrame.insert for add first new column with index values + 1:
df.insert(0, 'No', df.index + 1)
print (df)
No ID itemNum
0 1 A7855 item1
1 2 item2
2 3 A7856 item3
3 4 item4
4 5 item5