An Ethereum decentralized application (DApp) is typically a web application (so, written in HTML, CSS, and Javascript) that knows how to communicate with Ethereum nodes (using the Web3.js library, or directly using the JSON-RPC API). Each DApp likely is programmed by the developer(s) to communicate with one or several smart contracts that the developers already deployed into the Ethereum blockchain. In that way, a DApp serves as a friendly UI for a specific smart contract.
So, to the question of where the DApp is accessed from, the developer of the application can deploy it to a number of places. It can either be distributed as a downloadable (and the user runs the HTML file locally), hosted on a web server (on a ".com" domain or similar, or on a Tor node), or stored in IPFS and run from there.