Here upper bound means that Heap sort needs Maximum time O(nlogn) ..that is maximum it may take such time or has to perform such amount of work. but in best cases it(not specifically heapsort...any program i am talking about) may take very less amount of time..theoriticaly in best case it may take O(1) or O(logn) time i.e very less amount of time
but worst case lower bound means that the problem can't be solved less than the time mentioned in relation like Omega(nlogn)
whatever the input order/size is ...for example here you can't make a merge sort sooner that nlogn time proportion