1)è corretto creare dei metodi virtuali nella classe base che vengono utilizzati solo da un tipo di classe e non da altri tipi della stessa gerarchia di derivazione?
Si. Un esempio è la gerarchia di derivazione delle classi del DOM XML. Se noti, alcune classi hanno dei metodi derivati da Node, documentati come inutili su quel particolare tipo derivato e utili su altri.
Inoltre un altra domanda:
per calcolare il perimetro degli oggetti MarkerWall dovrei iterare il container e farmi ritornare , se l'oggetto è un MarkerWall il punto xyz da utilizzare poi successivamente dall' algoritmo che calcola il perimetro , ma solo se è un markerWall.
Detto quanto sopra, se il tuo oggetto reale è un MarkerWall, la funzione ritornerà qualcosa di valido; se non lo è falle ritornare qualcosa di non valido o lancia un'eccezione.
Se lavori con interfacce (puramente o parzialmente astratte), non deve interessarti (salvo casi particolari) cosa c'è sotto il cofano.