This depends on what you want to edit. If you want to add things that will be useful for others, then you can use the usual editing software (JOSM or Potlatch etc), and it to Openstreetmap in the usual way.
If you want to edit things specifically for your application, then you can use JOSM and save to a local .osm file, without uploading your changes. Then use that file to render maps from, or use it in your application etc.
If you just want to change what the map looks like, you can do this by rendering your own maps, and changing the rendering rules/styles, without actually editing the map data.
Hardware requirements will depend on just what you want to do. ie How large an area do you need a map for? And what zoom levels do you need?
If you need a map of the whole world, than I think you will need a lot of RAM to cope with processing the Planet file etc. And if you are rendering tiles for the whole world to a high zoom you will need a lot of disk space. See How large (in disk size) is a current complete tile set? and Tile Disk Usage.
Instead of pre-rendering all of the tiles, you could set your tileserver to render tiles on request, that wouldn’t require as much storage space. Though maybe more complicated to setup.
Or you could render the tiles on your own PC, then upload them to the server. That way the tile server is just a simple web server, so doesn’t have to be particularly powerful.
In terms of bandwidth, that depends on how many users you will have, and how many tiles they will each be using. The number of tiles used will presumably depend on your application, eg whether it caches tiles, and what zoom levels it uses.