How to do multiple queries?

The long way to solve this – and the one with the most transparency, so best for beginners – is to create a boolean column for each filter. Then sum those columns as one final filter:

df1['filter_1'] = df1['Group'].isin(['A','B'])
df1['filter_2'] = df1['Math'] > df1['Eng']
df1['filter_3'] = df1['Name'].str.startswith('B')

# If all are true
df1['filter_final'] = df1[['filter_1', 'filter_2', 'filter_3']].all(axis=1)

You can certainly combine these steps into one:

mask = ((df1['Group'].isin(['A','B'])) &
        (df1['Math'] > df1['Eng']) &
        (df1['Name'].str.startswith('B'))
       )

df['filter_final'] = mask

Lastly, selecting rows which satisfy your filter is done as follows:

df_filtered = df1[df1['filter_final']]

This selects rows from df1 where final_filter == True