After watching videos on dynamic x-path in Selenium I want to ask what does "dynamic" actually mean?
I don't know which videos you're referring to, so I'll guess at an answer.
Imagine someone asks for directions from the airport to your house. In most places you could simply give them the street address. Since no other house has the same street address, they could type it into Google Maps and get directions from there.
Now imagine you lived in a scene from Inception. Your street address changes from one moment to the next, so you can't use it to give directions. Instead, you might say, "Go to Heisenberg Street, then find the fifth house on the right." But we're in an Inception scene, so the street changes names too.
If you can't rely on the street name, you might try saying, "Go straight out of the airport, get on the highway, go two miles, then take the right right, go three blocks, and turn left. I'm the fifth house on the block." I didn't use any names there, just turns and and distances. That works unless the house can switch places with another house, or a highway can get longer or shorter, or extra streets can spring into existence.
All of that can happen with elements in a web page. Those changes are called dynamic elements.
Does it mean that the value changes at runtime or it can change over a period of time with no change to the application in between?
It depends. A hard part about automating UI tests is knowing where the elements are. When you refer to an element, you want to do so in terms of things that don't change. An element's value -- especially an input element -- is the most likely thing to change, so normally you would use something else about the element, like its name or ID or its relationship to other elements.
Also, when we select a dynamic x-path how can we know ahead of time which values will stay the same and which will change?
In general, you can't. You have to guess based on what you know about the website. Sometimes you will be wrong, so you will have to change the XPath. Other times, your guess will be invalidated by a change to the website. That's part of what makes automating UIs challenging.
Lastly, can a user change any values using firebugs manually to make them unique, so he wont need to resort to finding elements dynamically?
No. Changes by Firebug go away when the web page is refreshed.