Partitions are always read/write; the ext2 partitions are *mounted* read only. /dev/hda3 is not ever "mounted", we deal with it ourselves, using it at sector level.
You can open a block device as you would any other file, but (ISTR) you need to start any i/o requests at sector boundaries, though the lengths you request don't have to be sector multiples.
The partition doesn't store the currently playing file, just the current playlist - the index into the playlist is stored in /dev/empeg_state. The problem with us documenting this is that we treat it as internal data and we change it regularly - 1.1 uses the partition differently to 1.01 for example. Deleting the currently playing fid may well be problematic, as you'd have to remount the partition when it had files open (which it may well not let you do).
Hugo