The simplest way to explain JNDI is by example.
In the days before the Internet, if you wanted to call someone you had to find their number in the phone book. This lookup actually has two parts, 1) finding the right phone book, and 2) finding the person's number in that book.
Using JNDI is like publishing a phone number in a phone book. A publisher has to insert the name and number so its available for searches. A client needs to locate the correct book and then retrieve the number.
[Pre-Internet example follows]
Say you want to ask out someone you know from school but you don't know where the phone book is. You need to ask Mom. Mom is the Context Provider.
Whoever is maintaining your application server can add the JNDI entry. They also provide the Provider_URL.
Now, to your question about LDAP vs. FileSystem. LDAP is normally used by big companies to store information about their employees, like the listing (a directory) in the lobby of a medical building.
FileSystem would be like fileshares on a network. They might physically get moved between servers but you want clients to still be able to find them. You publish a sharename "\LUNCHSCHEDULE" which lets people connect to it without knowing its actual location. The FileSystem provider would be configured with the physical mapping. Clients have to be told the ProviderURL for the FileSystem provider, which the admin needs to give out.